Dart:
리팩토링

방법:

예시 1: 이름 변경 및 메소드 추출하기

리팩토링 전에는 할인을 계산하고 적용하는 등 다양한 수준의 추상화나 책임을 혼합한 코드가 있을 수 있습니다:

void main() {
  var price = 100.0;
  var discount = 0.2;
  var finalPrice = price - (price * discount);
  print("최종 가격: $finalPrice");
}

출력:

최종 가격: 80.0

리팩토링 후에는 할인 계산을 자체 메소드로 추출하고 의미 있는 이름을 지정할 수 있습니다:

void main() {
  var price = 100.0;
  var discount = 0.2;
  var finalPrice = calculateFinalPrice(price, discount);
  print("최종 가격: $finalPrice");
}

double calculateFinalPrice(double price, double discount) {
  return price - (price * discount);
}

출력:

최종 가격: 80.0

계산을 메소드로 추출함으로써 재사용이 가능하고 독립적으로 테스트하며 쉽게 수정할 수 있는 명확하게 정의된 작업을 갖게 되었습니다.

예시 2: 조건식 간소화하기

리팩토링 전에는 조건문이 너무 복잡하거나 읽기 어려울 수 있습니다:

void main() {
  var customerType = "regular";
  double discount;
  
  if (customerType == "regular") {
    discount = 0.05;
  } else if (customerType == "member") {
    discount = 0.1;
  } else {
    discount = 0.0;
  }

  print("할인: $discount");
}

출력:

할인: 0.05

리팩토링 후 고객 유형과 할인에 대한 업데이트나 확장이 더 쉬운 구조를 위해 맵을 사용하는 것을 고려해 보세요:

void main() {
  var customerType = "regular";
  var discounts = {
    "regular": 0.05,
    "member": 0.1,
    "none": 0.0,
  };

  var discount = discounts[customerType] ?? 0.0;
  print("할인: $discount");
}

출력:

할인: 0.05

이 리팩토링은 코드를 더 간결하게 만들 뿐만 아니라 할인을 결정하는 로직을 이해하고 유지하기 더 쉬운 방식으로 캡슐화합니다.

제3자 라이브러리를 이용한 리팩토링

Dart에서 특히 Flutter 앱 내에서 리팩토링을 할 때는 Dart DevTools 스위트가 매우 중요합니다. 성능 도구, 위젯 인스펙터, 소스 레벨 디버거가 포함되어 있습니다. Dart DevTools는 제3자 라이브러리는 아니지만, 리팩토링을 통해 모듈성과 가독성을 개선하기 위해 flutter_bloc 같은 라이브러리와 함께 자주 사용됩니다. 이 항목의 범위 때문에 제3자 라이브러리를 사용한 구체적인 코드 예시는 여기서 제공되지 않지만, 개발자들은 이러한 도구를 탐색하여 자신의 Dart/Flutter 애플리케이션에서 리팩토링 과정을 향상시키도록 권장됩니다.