2

メソッドのオーバーロードをいつ使用し、いつ別の「リクエスト」クラスを使用するかを決定するための最良の「経験則」は何ですか? 例えば:

MakePancakes(int size)
MakePancakes(int size, bool addBlueBerries)
MakePancakes(int size, bool addBlueBerries, ...)

とは対照的に:

MakePancakes(PancakeOptions options)

いずれかの方法に固執するのが最善ですか、それとも「必要」なときにどちらかを使用するのが最善ですか? 一方を他方よりもいつ、どこで使用する必要があるかについて、何かポイントはありますか?

どちらを使用するかをどのように決定し、その理由は何ですか?

4

2 に答える 2

2

MakePancakes(PancakeOptions options) を使用する本当の利点は、メソッドの実装を変更せずに PacakeOptions の属性の数を変更できることです。パラメータの数が変更される場合やオプションの場合に役立ちます。このように構成/プロパティ/オプションを表すことは理にかなっています。

しかし、メソッドのオーバーロードに代わるものではないと思います。

経験則:

  • メソッドに 5 つ以上の引数がある場合、そのメソッドはおそらく複数のことを行っています。メソッドを見直して、より具体的な機能に分割しようとします。

  • メソッドのすべての属性が必要です (つまり、null にすることはできません)。

于 2009-02-05T22:13:59.417 に答える
1

リクエスト タイプまたは列挙型を作成する前に、多くのオーバーロードは必要ありません (列挙型の配列は非常に単純なリクエスト オブジェクトのように見えます)。多分3-4?一部のフレームワーク メソッドには 9 ~ 10 個のオーバーロードがあり、少し面倒だと思いますが、これはむしろスタイルの問題だと思います。

于 2009-02-05T22:03:25.943 に答える