2

メソッドに多くの引数を渡す代わりに、引数オブジェクトにカプセル化していました。

:デモ用に簡略化
代替テキスト

このような場合、より良いプラクティスは何でしょうか?

• クラスを作成し、?という名前を付けます。 -- または -- • 入れ子になったクラスを作成し、?という名前を付けます。InventorySaveArgs

SaveArgs

また、どちらか一方を選択する理由についても説明していただけますか?

[編集] : その引数の型は、別のアセンブリでも使用されます。

副次的な質問: 複数のパラメーターを単一のオブジェクトにカプセル化するためのパターン名が偶然に存在するかどうか、ちょっと興味があります。

[UPDATE] : MSDNでネストされた型の使用に関するガイドラインが見つかりました
InventorySaveArgs。別のアセンブリから入手できるはずなので、通常のクラスを使用します。

4

4 に答える 4

1

複数のパラメーターを 1 つのオブジェクトにカプセル化する唯一のパターンは、Martin Fowler によって詳述されているリファクタリング パターンです。

于 2009-03-27T14:55:56.413 に答える
1

最初のクラスを選択して、外部クラスを作成し、InventorySaveArgs という名前を付けます。特定のクラスが public メソッドで使用されている場合、それをクラスの外に含めないための唯一の引数は、名前空間の汚染です。

型名の前に常にクラス名を付ける必要があるため、内部クラスを持つことは C# では非常に面倒です。述べたように、一旦それが公開されると、donig の唯一の動機は名前空間汚染の削減です。ただし、名前空間が非常に大きいため、InventorySaveArgs クラスが大きくなりすぎている場合は、おそらく名前空間を分割する必要があります。

于 2009-03-27T14:48:29.677 に答える
1

InventorySaveArgsその型を他の型で使用できるようにしたい場合に備えて、名前を付けます。最初から名前を付けるとInventorySaveArgs、リファクタリングが必要になった場合に、すべてのコンテキストで意味のある名前になります。

于 2009-03-27T14:47:29.943 に答える
1

IIRC .NET 設計ガイドラインは、これについて非常に明確です。公開されたネストされた型があってはなりません。

于 2009-03-27T14:47:38.727 に答える