TOP

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

Divergent Change

Divergent Change(変更の発散)

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

兆候と症状 クラスに変更を加えると、多くの無関係なメソッドを変更する必要があります。たとえば、新しい製品タイプを追加する場合、製品の検索、表示、注文の方法を変更する必要があります。

問題の理由 このように修正箇所が発散する原因は、多くの場合、不十分なプログラム構造またはコピペプログラミングによるものです。

対処

  • Extract Class」を使ってクラスの振る舞いを別クラスに分割します。

  • 異なるクラスが同じ振る舞いを持っている場合、継承を利用してクラスを統合します(「Extract Superclass」と「Extract Subclass」)。

効果

  • コード構成の改善
  • 重複コードの削減


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

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