【问题标题】:Is it better to create methods with a long list of parameters or wrap the parameters into an object?是创建具有一长串参数的方法还是将参数包装到一个对象中更好?
【发布时间】:2011-02-05 14:56:33
【问题描述】:

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

我的意思是说我有一个带有一长串属性的客户端数据类型,我想一次更新所有属性。做类似的事情会更好吗

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)
{  }

谢谢

【问题讨论】:

  • 使用第二种方法。在您编写对 Update 的调用的那一刻,您将不会记住每个参数是什么。 IntelliSense 可能会有所帮助,但在浏览代码时尝试理解代码仍然很糟糕。

标签: c# refactoring


【解决方案1】:

在他的书Refactoring 中,Martin Fowler 明确将长参数列表称为代码气味,并建议重构此类方法以使用参数对象

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

参数对象的优点是代码变得更具可读性,当您可以给参数对象一个交流名称。事实证明,参数对象代表了一个真正的领域概念,接下来您可以开始将行为移入其中。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-08
        • 2011-12-10
        • 1970-01-01
        • 2022-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多