창발(創發)또는 떠오름 현상은 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다.(위키백과)
켄트 벡이 제시한 단순한 설계 규칙 4가지
'테스트 케이스를 만들고 계속 돌려라'라는 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는, 객체 지향 방법론이 지향하는 목표를 저절로 달성할 수 있다!
코드 몇 줄을 추가할 때마다 잠시 멈추고 설계를 깔끔하게 조감한다. 테케가 있으므로 코드를 정리하면서 시스템이 깨질까 걱정할 필요가 없다. 리팩터링 단계에서는 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용해도 괜찮다.
공통적인 코드를 새 메서드로 뽑아서 중복을 없애자.
유지보수를 위해, 코드는 개발자의 의도를 분명히 표현해야 한다.
위 4가지 규칙을 지켜서 표현하도록 노력하자.
클래스와 메서드 크기를 줄이자고 조그만 클래스와 메서드를 수없이 만드는 사례도 있다. 하지만 목표는 함수와 클래스 크기를 작게 유지하면서 동시에 시스템 크기도 작게 유지하는 데 있다. 중복을 제거하는 작업이 더 중요하긴 하지만, 지나치게 과해지지 않도록 조심하자.