Skip to main content Link Search Menu Expand Document (external link) Copy Copied

복잡도를 제한하자

  • 코드의 복잡도는 그것을 이해하고, 유지보수하는 데에 얼마나 많은 노력이 필요한지를 나타낸다.
  • 복잡도는 코드를 따라가는 경로의 수로 측정할 수 있다.
  • ‘분기점’이란 실행 흐름을 나누는 조건문(예: if, switch)을 의미한다.
  • 단위당 분기점은 4개로 제한하자. 이는 복잡도를 5로 제한하는 것과 같다.
  • 분기점을 줄이는 것은 필요한 테스트의 수를 줄이고, 코드를 이해하기 쉽게 만든다.

간단한 단위의 중요성

  • 간단한 단위는 복잡한 단위보다 이해하기 쉽고 수정하기 쉽다.
  • 또한 테스트하기도 쉽다.

분기점이 될 수 있는 문과 연산자

  1. if
  2. case
  3. ?
  4. &&, \||
  5. while
  6. for
  7. catch

복잡도를 줄이는 해결방안

  • 코드 블록이 독립적이면, 메서드 추출 패턴으로 리팩토링하자.
  • 조건들이 서로 배타적이면, switch문을 사용하거나, if-then-else문 체인을 피하자.
  • 긴 switch문은 맵(Map) 자료구조를 사용하여 다형성으로 대체하자.
  • 중첩 조건문은 각 경우에 대해 return문을 추가하고 제거하자.
  • 도메인의 복잡함이 기술적 복잡함을 의미하는 것은 아니다. 복잡한 시스템에서는 간단한 디폴트 프로세스를 구현하고 예외를 명시적으로 모델링하자.

결론

  • 코드를 간단하고, 이해하기 쉬운 단위로 작성하자.
  • 기능과 케이스를 잘 나타내는 이름을 사용하자.
  • 단위당 분기점은 4개로 제한하자.