TOP

このエントリーをはてなブックマークに追加

Shotgun Surgery


Shotgun Surgery

Shotgun Surgery(変更の分散)

※Shotgun Surgeryは、Divergent Changeという別のCode Smellと似ていますが、Shotgun SurgeryとDivergent Changeは真逆のものです。 Divergent Changeは1つのクラスに多くの変更が加えられることです。Shotgun Surgeryは一つの変更が複数クラスに対して同時に行われることを指します。

兆候と症状 変更を行う際、多くの異なるクラスに多くの小さな変更を加える必要がある場合。

問題の理由 単一の責任が多数のクラスに分割されたことが原因です。これは、Divergent Changeを熱心に適用した後に発生する可能性があります。

対処Move Method」と「Move Field」を使用して、既存の様々なクラスに分散した振る舞いを、単一のクラスに移動します。これに適したクラスがない場合は、新しいクラスを作成してください。

コードを同じクラスに移動して元のクラスをほとんど空のままにした場合、「Inline Class」を介してこれらの冗長なクラスを削除してみてください。

効果

  • コード構成の改善
  • コード重複の削減
  • メンテナンス性の向上


書籍としてはこの辺りが参考になると思います。

リファクタリング第2版
refactoring
レガシーコード改善ガイド
legacy_code