使用一长串参数创建方法或将参数包装到对象中是否更好(最佳做法是什么)?
我的意思是假设我有一个带有很长属性列表的客户端数据类型,我想一次更新所有属性。做一些像
这样的事情会更好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)
{ }
感谢
答案 0 :(得分:21)
在他的书Refactoring中,Martin Fowler明确地将长参数列表称为代码气味,并建议重构这些方法以使用参数对象。 / p>
一种变体是识别那些参数如何分组,并创建多个参数对象来代表每个这样的组。
参数对象的优点是,当您可以为参数对象提供通信名称时,代码变得更具可读性。可能会发现参数对象代表一个真正的域概念,接下来您要做的就是开始将行为移入其中。
答案 1 :(得分:1)
我会说最好使用一个对象。如果您搜索Stack Overflow,则有许多关于此主题的其他帖子
答案 2 :(得分:0)
您通常应该使用一个对象。通常,当方法上有大量参数时,这些参数会描述特定的“状态”。您的示例代码完全指出了我的意思。