哪个是方法参数的首选做法?

时间:2012-11-11 20:27:58

标签: php function methods

我对PHP中函数的方法参数格式有困难(可能是任何语言)。以下是两个候选人

候选人1:


function foo($param1,$param2,$param3,....$paramN) 



候选人2:


function foo ($arr) {
   $param1 = $arr['param1'];
   $param2 = $arr['param2'];
   $param3 = $arr['param1'];
   ...
   ...
   ...
   $paramN = $arr['paramN'];
}

我现在倾向于候选人2因为我有几个方法有很多参数。但是,我也担心如果我走上候选人2的路径,那么我的代码就有可能变得难以理解并且不易维护。虽然候选人2也非常诱人,因为现在params的顺序变得无关紧要(因此方法签名),但我担心调试会变得很痛苦。

那么推荐的方式是什么?选择哪个候选人以及为什么?

1 个答案:

答案 0 :(得分:3)

许多参数永远不会很好处理,我个人会选择候选人2,因为它更具可扩展性。您可以使用验证逻辑来​​补偿“混乱”,确保所有必需参数都已正确设置。

- 在我看来 - 最好的方法是重构代码并将方法拆分成几个可能可链接的部分,以减少复杂性。

可能还有一个不错的选择是使用Value Objects(有时也使用数据传输对象)来传递某种“容器”中的所有参数。通过这种方式,可以确保只传递有效数据,因为Value Object会关注其内容。