창발성

  • 하위계층(구성 요소)에는 없는 특성이나 행동이 상위계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상

1. 창발적 설계로 깔끔한 코드를 구현하자

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