私の意見では、プログラムの長期的な安定性と保守性を向上させるために、必要なものは何でも書く必要があります。今日20行のコードを書くことを避ける意味は何ですか、このコードを使用するものに触れるか、このクラスを維持するために戻ってくるたびに、今日の時間を入れなかったために余分な5分以上かかりますか?
それで、質問は「何を書く必要がありますか」になります。決定的な答えを出すのに十分な情報を提供してくれるとは思わないので、決断を下す際に考えられることをいくつか挙げておきます。
1.現在または近い将来、Trailerオブジェクトを単独で持つ必要がありますか?
もしそうなら、あなたはすでにどちらか一方をラップしなければならないので、あなたは両方の合成されたオブジェクトのラッパーを作るためのかなり良い議論を持っています。一貫性があるかもしれません。
2. 3つのタイプ(Car、Trailer、CarWithTrailer)のいずれかは、開発者が頻繁にアクセスするコードの領域にありますか?
もしそうなら、非常に注意してください。間違ったものを選択することの影響は、コードに触れるたびに非常に費用がかかるためです。そうでなければ、あなたが決めたものに何の違いももたらさないかもしれません。ただ方向を選んでそれと一緒に行きます。
3.最も理解しやすいものは何ですか?
あなたの後ろにいる誰かがあなたがやろうとしていることをすぐに「取得」するだろうというアプローチがありますか?チームメイトには、特定のバイアスがあり、1つのアプローチを維持するのが難しくなる可能性がありますか?すべてが等しい場合、認知負荷が最も低いソリューションを選択します。
4.あるアプローチを別のアプローチよりも使用することの追加の利点はありますか?
私に飛び出すことの一つは、あなたのCarWithTrailerWrapperを包むことができ、それを書いた場合、ラッパーアイデアは明確な利点を持っていることで任意の車とどの CarWithTrailerにトレーラーを。次に、すべてのパススルーメソッドを記述しますが、各Carクラスに対して1回ではなく、一度だけ記述します。
これにより、車やトレーラーを追加するにつれて、パススルーメソッドを記述するための初期投資がはるかに安くなります。また、VolvoまたはVolvoWithTrailerに直接結合する誘惑を減らし、CarWithTrailerWrapperへの結合の結果を減らします。これは、その1つの実装だけでより多くのことができるためです。
拡張メソッドを使用することで無料で得られる明らかな利点があるかもしれませんが、私はそれらを見ません。
わかりましたので、自明ではないアプリケーションのために、先に進んでパススルーメソッドを埋めることについて話をしたようです。
私はC ++プログラマーではないので、どのコード生成ツールを使用できるかわかりません。私が使用するIDEでは、インターフェイスからメソッドを生成できます。また、パススルーの作成を非常に簡単にするコードテンプレートを追加できます。これを行うIDEにアクセスできない場合は、実際にExcelにコードを書いてもらうことができます。