创建具有长参数列表的方法或将参数包装到对象中是否更好?

时间:2010-04-08 09:18:16

标签: c# refactoring

使用一长串参数创建方法或将参数包装到对象中是否更好(最佳做法是什么)?

我的意思是假设我有一个带有很长属性列表的客户端数据类型,我想一次更新所有属性。做一些像

这样的事情会更好
public int Update(int id, string name, string surname, string streetAddress, string streetAddress2, string postcode, string town, string city, string nationality, string age, string gender,string job)
{  }

或将所有属性包装在对象中并执行类似

的操作
public int Update(Client client)
{  }

感谢

3 个答案:

答案 0 :(得分:21)

在他的书Refactoring中,Martin Fowler明确地将长参数列表称为代码气味,并建议重构这些方法以使用参数对象。 / p>

一种变体是识别那些参数如何分组,并创建多个参数对象来代表每个这样的组。

参数对象的优点是,当您可以为参数对象提供通信名称时,代码变得更具可读性。可能会发现参数对象代表一个真正的域概念,接下来您要做的就是开始将行为移入其中。

答案 1 :(得分:1)

我会说最好使用一个对象。如果您搜索Stack Overflow,则有许多关于此主题的其他帖子

答案 2 :(得分:0)

您通常应该使用一个对象。通常,当方法上有大量参数时,这些参数会描述特定的“状态”。您的示例代码完全指出了我的意思。