C# 为参数对象创建常规类还是内部类?
我没有将许多参数传递给一个方法,而是将其封装到一个参数对象中 注:简化为演示版C# 为参数对象创建常规类还是内部类?,c#,.net,naming-conventions,inner-classes,parameter-object,C#,.net,Naming Conventions,Inner Classes,Parameter Object,我没有将许多参数传递给一个方法,而是将其封装到一个参数对象中 注:简化为演示版 在这种情况下,什么做法更好? •创建一个类,并将其命名为inventorySaverags? --或者-- •创建一个嵌套类,并将其命名为SaveArgs 你能解释一下为什么一个人会选择其中一个吗 [编辑]:该参数类型也将在其他程序集中使用 附带问题:奇怪的是,是否有一个模式名用于将多个参数封装到单个对象中 [更新]:在MSDN上 InventorySaveArgs应该可以从其他程序集中使用,因此我将使用一个常规类
在这种情况下,什么做法更好?
•创建一个类,并将其命名为
inventorySaverags
?--或者--
•创建一个嵌套类,并将其命名为
SaveArgs
你能解释一下为什么一个人会选择其中一个吗
[编辑]:该参数类型也将在其他程序集中使用
附带问题:奇怪的是,是否有一个模式名用于将多个参数封装到单个对象中
[更新]:在MSDN上InventorySaveArgs
应该可以从其他程序集中使用,因此我将使用一个常规类。我将它命名为InventorySaveArgs
,以防您希望其他类型可以使用该类型。如果您从一开始就将其命名为InventorySaverags,那么如果您需要重构,您将拥有一个在所有上下文中都有意义的名称。IIRC.NET设计准则对此非常明确-不应该有公共嵌套类型。我会选择第一个,创建一个外部类并将其命名为InventorySaverags。如果在公共方法中使用了特定的类,则不将其包含在类之外的唯一参数是名称空间污染
坦率地说,在C#中,拥有内部类是非常烦人的,因为您必须不断地在类型名称前面加上类的名称。如前所述,一旦它公开,donig的唯一动机就是减少名称空间污染。但是,如果您的命名空间太大,以至于InventorySaveArgs类将其变得太大,那么您可能需要拆分您的命名空间。我听说过的将多个参数封装到单个对象的唯一模式是一个+1:多么合适的命名模式。。参数对象。。谁会想到呢!这不正确。您应该避免使用公共嵌套类型,但有时使用这些类型是有充分理由的:好的,该规则有一个极为罕见的异常,但在这里不适用。有关CLR异常示例,请参阅WinForms ListView,它有六个嵌套的公共集合类型。它们是嵌套的,因为它们打算与ListView一起使用。其他WinForms控件具有类似的嵌套类型。