
창발성이 뭐지
우리들 대다수는 켄트 백이 제시한 단순한 설계 규칙 네가지가 소프트웨어 설계 품질을 크게 높여준다고 믿는다.
켄트 백은 다음 규칙을 따르면 설계가 단순하다고 말한다.
먼저 설계는 의도한 대로 돌아가는 시스템을 내놓아야한다. 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템은 테스트가 가능한 시스템이다.
테스트가 가능한 시스템을 만들려고 애쓰면 설계 품질이 더불어 높아진다.
테스트 케이스를 만들고 게속 돌려라 라는 간단하고 단순한 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는 객체 지향 방법론이 지향하는 목표를 저절로 달성한다.
테스트 케이스를 모두 작성했다면 점진적으로 리팩터링 해나간다.
코드를 정리하면서 시스템이 깨질까 걱정할 필요가 없다. 테스트 케이스가 있으니까!
비슷한 코드는 더 비슷하게 고쳐주면 리팩터링이 쉬워진다.
코드는 개발자의 의도를 분명히 표현해야한다. 개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉬워진다. 그래야 결함이 줄어들고 유지보수 비용이 적게 든다.
우선 좋은 이름을 선택한다.
둘째 함수와 클래스 크기를 가능한 줄인다.
세째 표준 명칭을 사용한다.
네째 단위 테스트 케이스를 꼼꼼히 작성한다.
표현력을 높이는 가장 중요한 방법은 노력이다.
함수와 클래스 크기를 작세 유지하면서 동시에 시스템 크기도 작세 유지하는 데 있다. 하지만 이 규칙은 간단한 설계 규칙 네 개 중 우선순위가 가장 낮다.