如何使用较少的方法参数

时间:2014-11-25 20:19:40

标签: c# methods arguments

我在这个方法中根据这些参数搜索表中的数据。

public List<Product_tbl> GET_Product(int? ProductID = null, string Name= null, bool? MakeFlag= null, string Color= null)
{
   ...
}

我知道我应该尽量减少对方法的论证,所以有什么方法可以编写我的代码清理并使用较少的参数来处理这种方法。

2 个答案:

答案 0 :(得分:5)

将参数包装在一个类中。

public class ProductArgs
{
    public int? ProductID { get; set; }
    public string Name { get; set; }
    public string Color { get; set; }
    public bool? MakeFlag { get; set; }
}

public List GET_Product(ProductArgs p){ ... }

正如评论所暗示的那样,你不应该努力减少参数,以便清理&#34;清洁&#34;码。除非该类构造在您的应用程序中具有其他用途,否则不应该使用这样的类来仅用于表示单个方法调用中的参数。不要害怕在方法调用中有4个参数,没有必要&#34;不清洁&#34;关于那个。

答案 1 :(得分:1)

有时你只需要有很多方法参数。您使用可选参数做的事情很棒,我假设您已经知道可以做

GET_Product(Name:"blah");

在我看来,您拥有的代码似乎很好,因为大多数查询都需要这些代码。如果你真的有太多的参数需要考虑的事情是创建一个可以为你保存你的参数的某种查询类。这在Java等可选参数不起作用的东西中使用得更多。但是,如果你需要它,它应该工作。例如:

MyQuery q = new MyQuery();
q.Name("Steve");
q.Id(42);
q.Color("pink");
GET_Product(q);