2

我没有将许多参数传递给一个方法,而是将它封装到一个参数对象中。

注意:简化为演示
替代文字

对于这种情况,更好的做法是什么?

• 创建一个类并将其命名InventorySaveArgs
- 或 -
• 创建一个嵌套类并将其命名SaveArgs

你能解释一下为什么会选择其中一个吗?

[编辑]:该参数类型也将在另一个程序集中使用。

附带问题:只是好奇,如果有一个模式名称用于将多个参数封装到一个对象中。

[更新]:在 MSDN 上找到的嵌套类型使用指南
InventorySaveArgs应该可以从另一个程序集中获得,所以我要上一个普通的课程。

4

4 回答 4

1

我会命名它InventorySaveArgs以防万一您想让该类型可供其他类型使用。如果您InventorySaveArgs从头开始命名,那么如果您需要重构,您将拥有一个在所有上下文中都有意义的名称。

于 2009-03-27T14:47:29.943 回答
1

IIRC .NET 设计指南对此非常清楚 - 不应该有公共嵌套类型。

于 2009-03-27T14:47:38.727 回答
1

我会选择第一个,创建一个外部类并将其命名为 InventorySaveArgs。如果在公共方法中使用特定类,则不将其包含在类之外的唯一论据是命名空间污染。

坦率地说,在 C# 中拥有内部类很烦人,因为您必须不断地在类型名称前面加上类的名称。如前所述,一旦它公开,donig 的唯一动机就是减少命名空间污染。但是,如果您的命名空间太大以至于 InventorySaveArgs 类使其太大,那么您可能无论如何都需要分解您的命名空间。

于 2009-03-27T14:48:29.677 回答
1

我听说过的将多个参数封装到单个对象的唯一模式是Martin Fowler 详述的重构模式

于 2009-03-27T14:55:56.413 回答