3

現在「最下位」にある (つまり、最も派生している) 未完成のクラス階層で仮想クラスを先制的に派生させることは、害がありますか、それとも悪い設計と見なされますか? 仮想継承が実際に必要になるまで (つまり、誰かが階層を拡張することを決定し、その結果がダイヤモンドになるまで) 待つ正当な理由はありますか?

4

2 に答える 2

3

実際に必要になるまで、仮想継承は避けます。仮想継承を使用すると、クラスで構築する抽象化の一部、特に基本クラスを初期化する方法がリークされます。これは、仮想基本への呼び出しを最も派生した型に強制することによって行われます。

于 2011-06-01T13:35:59.147 に答える
2

それを必要としないシステムに複雑さが加わります。

将来のニーズを見越して機能や機能をコードベースに追加すると、多くの場合、ターゲットを逃します。その機能が実際にいつか必要になる場合もありますが (今日でなくても)、多くの場合はそうではありません。その結果、クラスが大きく複雑になり、理解が難しく、デバッグ、保守、および拡張が難しくなり、効率の点でより多くのコストがかかる可能性があります。

KISSの原則には理由があります。コードがRube Goldberg machineにならないようにします。

于 2011-06-01T13:43:26.053 に答える