[javascript] 함수 복잡도 감소

프로그래밍에서 함수의 복잡도를 감소시키는 것은 코드의 성능을 향상시키고 유지보수를 더욱 용이하게 만들 수 있습니다. 복잡도가 높은 함수는 디버깅이 어렵고 코드 이해를 방해할 수 있습니다. 따라서 함수를 작성할 때 복잡도를 낮추는 방법을 고민하는 것은 매우 중요합니다.

복잡도란 무엇인가?

함수의 복잡도란 해당 함수가 얼마나 복잡하고 어려운지를 나타내는 지표입니다. 이는 대개 함수 내의 코드 라인 수, 제어문(if, else, switch)의 수, 루프(for, while)의 수, 그리고 함수 내에서 호출하는 다른 함수의 수 등을 나타냅니다.

복잡도를 낮추는 방법

1. 기능을 분리

하나의 함수가 맡은 기능이 많으면 복잡도가 높아집니다. 따라서 여러 기능을 수행하는 함수는 각각의 기능을 분리하여 별도의 함수로 작성하는 것이 좋습니다.

// 기존의 복잡한 함수
function complexFunction() {
  // A 기능
  // ...

  // B 기능
  // ...

  // C 기능
  // ...
}

// 기능을 분리한 함수
function functionA() {
  // A 기능
  // ...
}

function functionB() {
  // B 기능
  // ...
}

function functionC() {
  // C 기능
  // ...
}

2. 중복 코드 제거

중복된 코드는 오류를 발생시키고 코드를 이해하기 어렵게 만듭니다. 중복 코드를 제거하고 공통 로직을 별도의 함수로 분리하여 활용하는 것이 좋습니다.

// 중복된 코드 처리
function commonFunction() {
  // 공통으로 사용되는 기능
  // ...
}

function functionA() {
  commonFunction();
  // A 기능
  // ...
}

function functionB() {
  commonFunction();
  // B 기능
  // ...
}

3. 단일 책임 원칙 준수

단일 책임 원칙(Single Responsibility Principle, SRP)은 함수가 단 하나의 일만 처리하도록 하는 것을 말합니다. 각 함수는 하나의 목적을 갖고 핵심 로직만을 수행해야 합니다.

// 단일 책임 원칙 준수
function calculateTotal(items) {
  // 총합 계산 기능
  // ...
}

function formatCurrency(amount) {
  // 통화 포맷팅 기능
  // ...
}

4. 루프 최적화

루프는 코드의 반복 실행을 의미하며, 이를 최적화하여 함수의 복잡도를 낮출 수 있습니다. 불필요한 루프를 줄이고 성능에 영향을 주는 루프 내의 연산을 최적화하는 것이 중요합니다.

마무리

함수 복잡도를 감소시키는 것은 코드의 품질을 향상시키고 유지보수를 용이하게 만듭니다. 함수를 작성할 때 항상 복잡도를 고려하고, 위에 언급된 방법들을 활용하여 효율적이고 가독성이 좋은 코드를 작성하는 데 주의를 기울이세요.

이상으로 함수의 복잡도 감소에 대해 알아보았습니다. 감사합니다.

참고 문헌: MDN Web Docs