[12장] 창발성

DAYEON·2021년 7월 26일
0

Clean Code

목록 보기
13/17
post-thumbnail

창발성 : 떠오름 현상. 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다. 또한, 불시에 솟아나는 특성을 창발성이라고 한다.


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

👉 우수한(단순한) 설계가 나오는 간단한 규칙 네 가지를 중요도 순으로 알아보자!

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

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

👉 테스트가 불가능한 시스템은 검증도 불가능하다.

  • 검증이 불가능한 시스템은 절대 출시하면 안된다.
  • 철저한 테스트가 가능한 시스템을 만들면 더 나은 설계가 얻어진다.
  • 더 나은 설계 → 낮은 결합도와 높은 응집력 객체 지향 방법론이 지향하는 목표

단순한 설계 규칙 2~4: 리팩터링

👉 테스트 케이스와 함께 코드를 점진적으로 리팩터링 해나간다. 리팩터링 단계에 대해!

  • 코드 추가 후 테스트 케이스를 통해 확인한다.
  • 리팩터링 단계에서는 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용 OK
  • 단순한 설계 규칙 중 나머지 3개를 적용한다.

중복을 없앤다.

👉 우수한 설계에서 중복은 커다란 적이다.

  • 비슷한 코드는 더 비슷하게 고쳐주면 리팩터링이 쉬워진다.
  • TEMPLATE METHOD 패턴을 적용해 중복을 제거하자. https://jusungpark.tistory.com/24

표현하라

👉 장기적인 유지보수를 위해 다른 사람이 이해할 수 있는 코드를 작성하자. 의도를 분명히 표현하자!

  • 기능과 매칭되는 좋은 이름을 선택한다.
  • 함수와 크기를 가능한 줄인다. 작을 수록 모두 쉬워진다!
  • 표준 명칭을 사용한다. EX) 클래스에 표준 패턴(COMMANDVISITOR)을 사용시 패턴 이름 넣기
  • 단위 테스트 케이스 꼼꼼히 작성하자. 테스트 테이스는 예제로 보여주는 문서!

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

👉 무조건 작게? 많은 것은 금물, 가능하면 수도 줄여라!

  • 무의미하고 독단적인 정책으로 클래스와 메서드 수가 늘어나는 것을 주의하자.
  • 함수와 클래스 크기를 작게 유지하면서 시스템 크기도 작게 유지하는 것이 목표이다!

결론

👉 단순한 설계 규칙은 오랜 경험을 통해 나왔다. 이 규칙을 따른다면 우수한 기법과 원칙을 단번에 활용할 수 있다!


인상 깊었던...

자신의 작품에 조금만 더 주의를 기울이자. 주의는 대단한 재능이다.

가능한 독단적인 개념은 멀리하고 실용적인 방법을 택한다.

경험을 대신할 단순한 개발 기법이 있을까? 당연히 없다.


profile
노력하는 초보 개발자

0개의 댓글