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

このリファクタは、コードをより簡潔にするだけでなく、割引を決定するロジックを理解しやすく、維持しやすい方法でカプセル化します。

サードパーティ製ライブラリのリファクタリング

Dartでリファクタリングを行う場合、特にFlutterアプリ内では、Dart DevTools スイートが非常に価値があります。これには、パフォーマンスツール、ウィジェットインスペクター、およびソースレベルのデバッガーが含まれています。Dart DevToolsはサードパーティ製のライブラリではありませんが、リファクタリングを通じて改善されたモジュール性と可読性に寄与する方法で状態をクリーンに管理するflutter_blocのようなライブラリと一緒に使用されることがよくあります。残念ながら、このエントリーの範囲内では、サードパーティ製のライブラリを使用した具体的なコード例は提供されませんが、開発者はこれらのツールを探求して、自分のDart/Flutterアプリケーションでのリファクタリングプロセスを強化することが奨励されています。