728x90
반응형
CHAPTER 12 창발성 (Emergence)
- 하위 계층에는 없는 특성이나 행동이 상위 계층 (전체 구조) 에서 자발적으로 돌연히 발생하는 현상
창발적 설계
- 단순한 4가지를 반복하다 보면 전체적으로 깨끗한 코드가 만들어진다.
-
- 모든 테스트를 실행한다.
-
- 중복을 없앤다.
-
- 프로그래머 의도를 표현한다.
-
- 클래스와 메서드 수를 최소로 줄인다. (실용적 관점에서 타협한다.)
모든 테스트를 실행한다.
- 테스트를 작성할수록 설계 품질이 좋아진다.
중복을 없앤다.
- 기존의 코드를 최대한 재활용한다.
- 각 메서드를 따로 구현하지 않고 최대한 활용한다.
Template Method 패턴
- 알고리즘의 구조를 상위 클래스의 메서드에서 정의하고, 하위 클래스에 자신에 맞게 세부 알고리즘을 정의한다.
- 공통된 알고리즘을 템플릿 메서드에 담고 동일한 내용에 대해서는 메서드를 구현하고 다른 내용은 하위클래스가 구현하도록 abstract 메서드로 만든다.
- 하위클래스는 각자의 알고리즘을 구현한다.
의도를 표현한다.
- 좋은 이름을 선택한다.
- 함수와 클래스의 크기를 가능한 줄인다.
- 표준 명칭을 사용한다. 다른 개발자가 보고 바로 이해할 수 있도록 디자인 패턴을 사용했다면 그 이름을 클래스에 넣어준다.
- 단위 테스트 케이스를 꼼꼼하게 작성한다.
- 다른 사람을 위해 조금이라도 더 읽기 쉽게 만드려고 노력한다.
실용적 관점에서 타협한다.
- 과도한 설계를 하지않는다.
- 여러가지 규칙에 극단적으로 심취해 클래스와 메서드를 무수하게 만들지 말라.
- 결국 좋은 코드를 만드는 이유는 생산성을 올리기 위한 것
- 실용적인 관점에서 타협해야 한다.
DIP 의존적 역전 원칙
- 상위 모델은 하위 모델레 의존하면 안된다. 둘 다 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존해서는 안된다. 세부 사항은 추상화에 따라 달라진다.
728x90
반응형
'clean code' 카테고리의 다른 글
| [클린코드] CHAP 14 점진적인 개선 (0) | 2022.06.13 |
|---|---|
| [클린코드] CHAP 13 동시성 (0) | 2022.06.13 |
| [클린코드] CHAP 11 관심사 분리 패턴들 (0) | 2022.06.13 |
| [클린코드] CHAP 10 클래스 (0) | 2022.06.13 |
| [클린코드] CHAP 09 단위테스트 (0) | 2022.06.13 |