1

http://www.jetbrains.com/idea/webhelp/extract-parameter-object.html

对于具有大量参数的方法,我一直发现将方法参数提取为对象是一个好主意。

public void Method(A a, B b, C c, D d, E e);

变成

public class Wrapper {A; B; C; D}

public void Method(Wrapper wrapper);

这使我能够:

  • 在我的代码中具有更好的可读性
  • 在 Wrapper 类中执行这些参数的验证,并在需要时跨层/组件重用它。
  • 提供不那么脆弱的方法签名。

您对此是否有任何其他优点/缺点可以帮助说服正在编写具有大量参数的方法的人?如果这有所作为,我正在编写 C# 4。

4

2 回答 2

0

我能想到的唯一缺点是在您的系统中有一个额外的抽象,要求您在访问之前提取(尽管微不足道)实际数据。我什至不确定这是否可以称为劣势。

参数封装最重要的优点是拥有一个健壮的、定义良好的接口,可以适应未来的变化。

于 2012-12-03T06:03:40.573 回答
0

更深层次的优势是,当您将参数包装在新类中时,您会意识到某些行为可以移动到新类中。这是因为修改参数的方法的主体可能会类似地操作参数。将这种常见行为移到新类中可以让您删除大量代码重复。参数验证只是可以移动到新类中的行为的一个示例。

于 2012-12-03T06:36:35.003 回答