*<클린 코드>를 참고하여 작성한 글입니다.
창발성
- 켄트백이 제시한 단순한 설계 네가지가 소프트웨어 설계 품질을 크게 높여준다고 믿는다.
- 모든 테스트를 실행한다 : 테스트가 불가능한 시스템은 검증도 불가능이다. 검증이 불가능한 시스템은 출시하면 안 된다. -> 테스트 케이스를 만들고 계속 돌려라 라는 간단하고 단순한 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는 객체 지향 방법론의 지향점을 저절로 달성한다. 즉, 테스트 케이스를 작성하면 설계 품질이 높아진다.
- 중복을 없앤다
- 프로그래머 의도를 표현한다
- 클래스와 메서드 수를 최소로 줄인다
- -> 테스트 케이스가 있으므로 코드를 정리하면서 시스템이 꺠질까 걱정할 필요가 없다
- 표현하라
- 코드는 개발자의 의도를 분명히 표현해야 한다. 개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉬워진다. 그래야 결함이 줄어들고 유지보수 비용이 적게 든다.
- 좋은 이름을 선택한다.
- 함수와 클래스 크기를 가능한 줄인다.
- 표준 명칭을 사용한다.
- 단위 테스트 케이스를 꼼꼼히 작성한다.
- 함수와 클래스에 조금 더 시간을 투자할 것.
- 클래스와 메서드 수를 최소로 줄여라
- 무의미하고 독단적인 정책탓에 클래스 수와 메서드수가 늘어나기도 한다. 독단적 견해는 멀리하고 실용적 방식을 택한다. 목표는 함수, 클래스 크기를 작게 유지하면서 동시에 시스템 크기도 작게 유지하는 데 있으나, 우선 순위는 가장 낮다.