공부 일지/스터디 자료

[스터디] 클린코드 스터디 4주차

Joshbla 2023. 7. 2. 11:35

클린코드 스터디 4주차: 12장 창발성


12장 창발성

창발성이 뭐지

하위 계층에는 없는 특성이나 행동이 상위계층에서 돌연히 출연하는 것

켄트 벡이 제시한 단순한 설계 규칙 4가지 (중요도 순)

  1. 모든 테스트를 실행한다.
  2. 중복을 없앤다.
  3. 프로그래머의 의도를 표현한다.
  4. 클래스와 메서드 수를 최소로 줄인다.

1. 모든 테스트를 실행한다.

테스트가 가능한 시스템을 만들어라.

테스트가 가능한지 확인하려면 자연스럽게 작은단위로 프로그램을 구현하게 된다.

그러면 결합도가 낮아져 SRP원칙을 구현하기 쉬워지고 설계 품질이 높아진다.

2. 중복을 없애라

소규모 재사용, 템플릿 메서드 패턴을 사용하라.

추상 클래스를 만들고 중복되는 부분을 메서드화 한다.

그것을 구체화한 클래스를 구현하고 해당 메서드를 이용한다. (override)

3. 표현하라

… 맨날 똑같은 얘기 반복 ..

좋은 이름 정하기, 함수와 클래스의 크기를 줄이기, 단위테스트 케이스를 꼼꼼히 작성하기, 표준 명칭을 사용하기(Command, Service, Controller 와 같은 표준 패턴을사용해 구현했다면 클래스 이름에 해당 패턴을 넣어주자.)

가장 중요한 것은 “노력”이라고 한다.ㅋㅋ 나중에 읽을 사람을 고려해 조금이라도 읽기 쉽게 작성하자

4. 클래스와 메서드 수를 최소로 줄여라

앞서 말했던 중복되는 코드를 없애고 추상화와 인터페이스를 사용하면

자연스럽게 줄일 수 있다.

그런데 모든테스트를 만들어서 실행하고, 함수와 메서드의 크기를 작게 줄이면 숫자는 그만큼 늘어날 것이다.

이렇게 내용이 충돌할 때는 이 항목의 우선순위가 4이기 때문에 위에있는 내용을 우선해야한다.

무조건 수를 줄이기 보단 적절한 테스트케이스를 만들고 적절히 중복을 없애고.. 의도를 표현하는 작업을 더 중요시하면 된다.