[javascript] 함수 추출 리팩터링

소프트웨어 개발 중 반복되는 코드나 복잡한 코드 조각을 함수로 추출하는 것은 코드의 가독성과 유지보수성을 향상시키는 중요한 리팩터링 기법 중 하나입니다.

왜 함수를 추출해야 하나요?

반복되는 코드를 함수로 추출함으로써, 코드 중복을 줄이고 에러를 방지할 수 있습니다. 또한, 긴 함수를 여러 단계로 분해하여 각 단계를 더 작고 이해하기 쉬운 함수로 만들 수 있습니다. 코드의 목적을 명확하게 나타내어 가독성을 높이고, 다른 부분에서 재사용할 수 있는 코드 블록을 생성할 수 있습니다.

어떻게 함수를 추출하나요?

함수를 추출하는 과정은 다음과 같습니다.

  1. 함수 추출 지점 식별: 반복되거나 복잡한 코드 조각을 찾아내고, 이를 새로운 함수로 분리할 수 있는 지점을 식별합니다.

  2. 새 함수 정의: 추출할 코드 조각을 새로운 함수로 정의합니다. 함수 이름은 해당 기능을 명확하게 나타내는 이름으로 지정해야 합니다.

  3. 매개변수 정의: 새로운 함수에 필요한 매개변수를 식별하고 정의합니다.

  4. 원본 함수 수정: 추출한 코드를 새로운 함수를 호출하는 형태로 원본 함수에서 제거합니다.

예시

아래는 JavaScript 코드의 예시입니다. 원본 함수에서 중복되는 코드를 새로운 함수로 추출하는 과정을 보여줍니다.

// 원본 함수
function calculateTotalPrice(quantity, price) {
  // 중복 코드 블록
  let discount = 0;
  if (quantity > 100) {
    discount = 0.1;
  } else {
    discount = 0.05;
  }
  
  let total = quantity * price;
  total -= total * discount;
  
  // 중복 코드 블록
  console.log("Total price:", total.toFixed(2));
}

위 코드에서 할인 계산 부분을 새로운 함수로 추출해보겠습니다.

// 원본 함수
function calculateTotalPrice(quantity, price) {
  let discount = calculateDiscount(quantity);
  
  let total = quantity * price;
  total -= total * discount;
  
  console.log("Total price:", total.toFixed(2));
}

// 새로운 함수
function calculateDiscount(quantity) {
  if (quantity > 100) {
    return 0.1;
  } else {
    return 0.05;
  }
}

위와 같이 코드를 함수로 추출하면, 코드의 가독성과 유지보수성을 향상시킬 뿐 아니라 할인 계산 부분을 다른 함수에서도 활용할 수 있습니다.

함수 추출은 코드의 품질을 향상시키는데 중요한 요소이며, 개발자들이 코드 리팩터링을 통해 지속적으로 개선해 나가는 것이 중요합니다.