창발성

Sshu Sshu·2022년 8월 24일
0

CleanCode

목록 보기
11/12
post-thumbnail

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

켄트 백이 제시한 단순한 설계 규칙 네가지

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

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

검증이 불가능한 시스템은 절대 출시하면 안 된다.
‘테스트 가능한 시스템'으로 만들어라.
결합도가 높으면 테스트 케이스를 작성하기 어렵다.
그러므로, 테스트 케이스를 많이 작성할수록 개발자는 DIP와 같은 원칙을 적용하고
의존성 주입, 인터페이스, 추상화 등과 같은 도구를 사용해 결합도를 낮춘다.
따라서 설계 품질은 더욱 높아진다.

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

코드를 정리하면서 시스템이 깨질까 걱정할 필요가 없다.
테스트 케이스가 있으니까!

리팩터링 단계에서는 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용해도 괜찮다.
응집도를 높이고, 결합도를 낮추고, 관심사를 분리하고, 시스템 관심사를 모듈로 나누고, 함수와 클래스 크기를 줄이고, 더 나은 이름을 선택하는 등 다양한 기법을 동원한다.

또한 이 단계는 단순한 설계 규칙 중 나머지 3개를 적용해 중복을 제거하고, 프로그래머 의도를 표현하고, 클래스와 메서드 수를 최소로 줄이는 단계이기도 하다.

중복을 없애라

우수한 설계에서 중복은 커다란 적이다.
중복은 추가 작업, 추가 위험, 불필요한 복잡도를 뜻하기 때문이다.
깔끔한 시스템을 만들려면 단 몇 줄이라도 중복을 제거하겠다는 의지가 필요하다.
소규모 재사용을 제대로 익혀야 대규모 재사용이 가능하다.

표현하라

코드는 개발자의 의도를 분명히 표현해야 한다.
개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉬워진다.
그래야 결함이 줄어들고 유지보수 비용이 적게 든다.

  1. 우선, 좋은 이름을 선택한다.
  2. 함수와 클래스 크기를 가능한 줄인다.
  3. 표준 명칭을 사용한다.
  4. 단위 테스트 케이스를 꼼꼼히 작성한다.

나중에 코드를 읽을 사람은 바로 자신일 가능성이 높다는 사실을 명심하자.
조금만 더 주의를 기울이자. 주의는 재능이다.

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

가능한 독단적인 견해는 멀리하고 실용적인 방식을 택한다.
목표는 함수와 클래스 크기를 작게 유지하면서 동시에 시스템 크기도 작게 유지하는 데 있다.
하지만 클래스와 함수 수를 줄이는 작업보다 테스트 케이스를 만들고 중복을 제거하고 의도를 표현하는 작업이 더 중요하다.

profile
Front-End Developer

0개의 댓글