본문 바로가기
study/Java

클린코드(Clean code) 12장 - 창발성

by 고기만두(개발자) 2022. 9. 22. 22:12
728x90
반응형

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

 

728x90
반응형

댓글