【问题标题】:What would be a good design to avoid methods with large number of parameters?避免使用大量参数的方法的好的设计是什么?
【发布时间】:2012-01-06 20:49:39
【问题描述】:
我遇到了一些设计问题。我正在做的是 C# 桌面应用程序中的拖放操作。我正在使用 .NET 树视图控件和第三方网格(不重要)。我在多个地方使用文件系统的这种拖放操作,所以我创建了一个静态类来处理这个问题。现在这不仅仅是一个普通的文件系统。树视图是目录的表示,网格有文件。复杂的部分是还有一个逻辑文件系统,所以所有这些都存储在数据库中。我只是解释所有这些,因为我想解释为什么我有问题。因为此时我正在处理许多对象,所以我的所有静态方法都有大量参数。我所有的静态方法几乎都使用与 wel 相同的参数 我能做些什么来避免这种情况吗?
【问题讨论】:
标签:
c#
.net
drag-and-drop
treeview
【解决方案1】:
通过将这些字段封装在常见对象中来减少参数,例如
而不是:
void DoSomething(string first, string middle, string last);
你可以:
void DoSomething(Name name);
其中名称可以表示为,
public class Name
{
string First {get; set;}
string Middle {get; set;}
string Last {get; set;}
}
【解决方案2】:
一旦我们得到一定数量的方法参数(3-5),我们创建一个类来保存参数参数,然后只传递这个类的一个实例作为参数。
如果您有多个方法具有基本相同的参数,这将特别有用。
不过,不要太过分了:如果你有一个只在一种方法中使用的参数,我不会将它包含在 arguments 类中,只需将它作为额外参数传递给异常方法.
此外,作为附带的好处,这使得将参数传递给线程/后台工作人员变得更加容易,因为您已经在类对象中拥有参数。