0. 창발성 : 하위 계층에는 없는 특성이나 행동이 상위 계층/전체 구조에서 자발적으로 돌연히 나타나는 현상. emergence.
ex) 개미들의 상호작용 => 개미집
1. 창발적 설계 by 켄트 백
1) 모든 테스트를 실행한다.
모든 테스트를 통과하는 시스템/예측 가능한 시스템을 만들어야 설계 품질이 높아지고,
결합도를 낮추고&응집도를 높일 수 있음
테스트가 안되는 시스템은 검증이 불가능하니 출시해서는 안됨.
2) 중복을 없앤다.
기존 코드 최대한 재활용 하기 (아 찔리는 코드 하나 생각남...)
*Template method 패턴 : 알고리즘의 구조를 상위 클래스 메서드에서 정의하고, 하위 클래스에서 세부 알고리즘을 정의
3) 프로그래머의 의도를 표현한다.
이름 잘 짓기
함수/클래스 사이즈를 줄이기
이해하기 쉬운 표준 명칭 사용& 디자인 패턴 반영
단위테스트 케이스 꼼꼼하게 작성
가독성 확보
4) 클래스와 메서드 수를 줄인다
: 실용적 관점에서의 타협이 필요, 사실 실무에서 무한정 줄일 수는 없으니ㅠㅠ
일어날 가능성이 희박한 부분까지 미리 고민하지 말 것.
DIP(의존성 역전 원칙)에 대한 설명은 https://career-gogimandu.tistory.com/27
객체지향 설계에서 꼭 필요한 SOLID 5대원칙(SRP/OCP/LSP/ISP/DIP)
SRP : Single Responsibility Principle, 단일책임 원칙 OCP : Open Closed Principle, 개방-폐쇄 원칙 LSP : Liskov Subtitution Principle, 리스코프 치환원칙 ISP : Interface Segregation Principle, 인터페이..
career-gogimandu.tistory.com
'study > Java' 카테고리의 다른 글
클린코드(Clean code) 14장 - 점진적인 개선 (0) | 2022.09.26 |
---|---|
클린코드(Clean code) 13장 - 동시성 (0) | 2022.09.25 |
클린코드(Clean code) 11장 - 시스템 (0) | 2022.09.21 |
클린코드(Clean code) 10장 - 클래스 (0) | 2022.09.19 |
클린코드(Clean Code) 9장 - 단위테스트 (0) | 2022.09.18 |
댓글