多重継承 (MI) は、クラスが複数の親クラスから継承できるようにするプログラミングの概念です。機能を組み合わせるには便利な方法のように思えるかもしれませんが、多くの場合、メンテナンスの悪夢につながる可能性があります。
1.継承より合成:
可能な場合は、継承ではなく合成を使用することを検討してください。合成を使用すると、MI の複雑さを招くことなく、さまざまな機能を持つオブジェクトを組み合わせることができます。
2.恐怖のダイヤモンド:
MI は、クラスが共通の祖先から継承する 2 つのクラスを継承する「恐怖のダイヤモンド」シナリオを作成できます。これにより、メソッド解決においてあいまいさや競合が発生する可能性があります。
3.仮想継承のあいまいさ:
オブジェクト階層では、継承グラフはグラフではなくツリーであることが理想的です。 MI は、同様のメソッドを共有する複数のインターフェイスから継承するときにあいまいさを引き起こす可能性があります。
欠点があるにもかかわらず、MI は特定のシナリオでは適切である可能性があります。
1.無関係なクラス:
問題のクラスが完全に無関係で、異なる目的を果たす場合、MI は実装を簡素化する可能性があります。
2.プライベート継承:
プライベート継承を使用すると、実装の詳細を公開せずに実装でき、MI に関連するリスクを軽減できます。
3. C のイディオム:
ポリシーなどの一部の C のイディオムは、特定の設計目標を達成するために MI を利用します。
MI は便利なオプションですが、使用する必要があります。注意してください。ほとんどの場合、MI に関連する複雑さや落とし穴を回避するには、合成または単一継承が推奨されます。コードレビューで MI の使用を擁護し、可能な限り代替アプローチを検討する準備をしてください。
以上がコード内での多重継承は避けるべきでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。