## 목차 ##



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



## 단순한 설계 규칙1 : 모든 테스트를 실행하라 ##

  • 시스템은 설계의도대로 돌아가야한다.

  • 모든 테스트 케이스를 항상 통과하는 시스템이어야한다.

    • 일단 테스트 가능한 시스템이어야한다.
    • 테스트가 불가능하면 검증도 불가능하다.
    • 검증 불가능한 시스템은 내놓아서는 안된다.
  • 테스트 가능한 시스템을 만들려고 애쓰다보면 설계 품질이 높아진다.

    • 크기가 작고 한 가지 역할만 하는 클래스가 나온다.
    • SRP를 준수하는 클래스는 테스트가 쉽다.
    • 결합도가 높으면 테스트 케이스를 작성하기 어렵다.



## 단순한 설계 규칙2 : 중복을 없애라 ##

  • 중복은 추가 작업, 추가 위험, 불필요한 복잡성을 뜻한다.
    • 똑같은 코드는 당연히 중복이다. 모아서 따로 빼내라.
    • 비슷한 코드는 더 비슷하게 고쳐주면 리팩터링이 쉬워진다.



## 단순한 설계 규칙3 : 표현하라 ##

  • 개발자 의도를 명확히 표현해야 유지보수자가 코드를 이해하기 쉽다.

    • 의도가 불명확하면 오해가 생기고 코드를 수정하면서 버그가 심어진다.
  • 좋은 이름을 선택해서 표현하라.

  • 함수와 클래스 크기가 작아야 이해하기 쉽다.

  • 표준 명칭을 사용한다.

    • ex) 디자인 패턴이 사용되면 클래스 이름에 넣어준다.
  • 단위 테스트 케이스를 꼼꼼히 작성한다.

    • 테스트 케이스는 예제이다.
    • 잘 만든 테스트 케이스를 보면 클래스 기능이 한눈에 들어온다.
  • 노력하라. 충분히 고민하라. 세심함을 기울여라. 주의하라.



## 단순한 설계 규칙4 : 클래스와 메소드 수를 최소로 줄여라 ##

  • 중복제거, 의도표현, SRP 준수와 같은 기본 개념도 극단적이면 득보다 실이 많다.

    • 크기를 줄이자고 수없이 많은 메서드를 만들면 안된다.
  • 클래스와 메소드 수를 줄여라.

    • 클래스마다 무조건적인 인터페이스 생성은 NO
    • 자료구조와 객체를 무조건 분리하는것도 NO

+ Recent posts