창발성
-
하위계층(구성 요소)에는 없는 특성이나 행동이 상위계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상
1. 창발적 설계로 깔끔한 코드를 구현하자
- 단순한 설계규칙(우선순위 1번 -> 4번)
- 모든 테스트를 실행한다.
- 테스트가 불가능한 시스템은 검증도 불가능함
- 테스트 케이스를 작성하면 설계 품질이 높아짐
- 중복 삭제
- 테스트 케이스를 작성하고 나면 코드를 정리하기 쉬워짐
- 중복: 추가 작업, 추가 위험, 불필요한 복잡도를 뜻함
- ‘소규모 재사용’으로 시스템 복잡도를 극적으로 줄일 수 있음
- TEMPLETE METHOD 패턴
- 표현
- 코드는 개발자의 의도를 분명히 표현해야함
- 좋은 이름 선택
- 함수와 클래스 크기를 작게
- 표준 명칭 사용
- 단위 케트스 케이스를 꼼꼼히 작성
- 노력: …함수와 클래스에 조금 더 시간을 투자하자. 더 나은 이름을 선택하고, 큰 함수를 작은 함수 여럿으로 나누고, 자신의 작품에 조금만 더 주의를 기울이자. 주의는 대단한 재능이다.
- 클래스와 매서드 수 최소화
- 가능한 독잔적인 견해는 멀리하고 실용적인 방식을 택해야함
- 함수와 클래스 크기를 작게 유지하면서 동시에 시스템 크기도 작게 유지하는것이 목표임
- 클래스와 함수 수를 줄이는 작업도 중요하지만, 테스트 케이스를 만들고 중복을 제거하고 의도를 표현하는 작업이 더 중요함