不適切な親密さと機能への羨望の違いは何ですか? 質問する

不適切な親密さと機能への羨望の違いは何ですか? 質問する

両方の臭いについては、Fowler の著書「Refactoring」で説明されています。

これらの匂いの意味を簡単に説明すると、次のようになります。

  • 機能羨望あるオブジェクトのメソッドが別のオブジェクトの 6 つの取得メソッドを呼び出すことです。
  • 不適切な親密さ2 つのクラスが互いのプライベートな部分に依存しすぎることです。

どちらの匂いも、ある物体の一部が他の物体に過度に依存していることを示しているようです。

これら 2 つの匂いの主な違いを説明してくれる人はいますか?

ベストアンサー1

かなりうまく説明してくれましたね。

不適切な親密性とは、直接アクセスされることを意図していないインスタンス変数に直接アクセスするなど、他のクラスのカプセル化を危険にさらすことを意味します。これは非常に悪いことです。危険にさらされているクラスのパブリック機能のみを使用するように、危険にさらされているクラスを修正し、可能であれば、他のクラスがそのプライベート機能にアクセスできないように危険にさらされているクラスを変更します。

機能羨望とは、メソッドが自身のクラスよりも他のクラスのパブリック機能を多く使用することです。これはそれほど悪いことではありません。なぜなら、(他のクラスのパブリック機能が安全に使用できると仮定すると) バグにはつながらないからです。しかし、2 つのクラス間の設計の絡み合いにはつながります。羨望の対象となるクラスに高レベルの (より抽象化された) パブリック機能を追加するか、羨望の対象となるクラスから羨望の対象となるクラスにメソッドを移動して、羨望の対象となるクラスが呼び出すメソッドの数を減らすことで修正します。

おすすめ記事