티스토리 뷰
7장. 코드 하나 바꾸는데 왜 이리 오래 걸리지?
제대로 유지되는 시스템과 레거시 시스템 간 차이점
적절히 유지된 시스템인 경우 어떻게 변경시키는지 알려면 오랜 시간이 걸릴지 모른다. 하지만 일단 어떻게 할지를 알고 나면 변경 자체는 매우 간단할 뿐만 아니라 변경 후 시스템이 휠씬 편안하게 느껴질 것이다. 레거시 시스템인 경우에는 무엇을 해야 하는지 이해하는데 오랜 시간이 걸릴 것이고 변경 자체도 힘든 과정이 될 것이다.
의존관계 깨기
의존관계를 깰수록, 그리고 클래스들을 새로운 패키지나 라이브러리로 이동시킬수록 시스템 전체 재빌드하는 비용은 늘어나지만, 빌드에 걸리는 평균 시간은 줄어들 것이다.
Opportunity handling 클래스들
ConsultantSchedulerDB 클래스에 대한 구현체 추출
OpportunityItem 클래스에 대한 구현체 추출
의존관계 반전 원칙
당신의 코드가 인터페이스에 종속되는 경우, 그 의존관계는 사실 경미한 수준으로 눈에 잘 띄지 않는다. 인터페이스가 변하지 않는 한, 코드를 변경시킬 필요는 없다. 또한 인터페이스들은 그들 아래에 위치한 코드에 비해 휠씬 적은 빈도로 변경된다. 인터페이스를 하나 가지고 있는 경우, 그 인터페이스를 구현하는 클래스를 편집하거나 그 인터페이스를 구현하기 위한 새로운 클래스들을 추가할 수 있다. 물론 그 인터페이스를 사용하는 코드에 영향을 주지도 않는다.
그런 이유 때문에 구체 클래스보다는 인터페이스나 추상 클래스에 종속되는 편이 좋다. 덜 변하는 것들에 종속됨으로써 특정 변경이 초래할지도 모를 대규모 재컴파일 사태의 위험을 최소화할 수 있다.
- James Song
'Books_tech' 카테고리의 다른 글
스콧 마이어스 <이펙티브 모던 C++> Item 23-26 요약 (0) | 2017.01.06 |
---|---|
마이클 C. 페더스 <레거시 코드 활용 전략> 8장 요약 (0) | 2016.12.21 |
마이클 C. 페더스 <레거시 코드 활용 전략> 6장 요약 (0) | 2016.12.13 |
마이클 C. 페더스 <레거시 코드 활용 전략> Part 1 요약 (1) | 2016.12.11 |
폴 그레이엄 <해커와 화가> (0) | 2016.09.24 |
- #cplusplus
- 책
- #scottmeyers
- #uwp
- #스콧마이어스
- #팀개발
- #build2016
- #제럴드와인버그
- 객체 지향 설계
- #클린코드
- #세미나
- #mva
- #로버트마틴
- Effective Modern C++
- Effective C++
- #마이클페더스
- #techdays2015
- 상속
- #프로그래밍심리학
- #알고리즘
- #자녀교육
- #csharp
- #ModernCPP
- #임백준
- Scott Meyers
- #ndc
- #코드최적화
- #cpp
- #EffectiveModernCpp
- #레거시코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |