我对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的顺序变得无关紧要(因此方法签名),但我担心调试会变得很痛苦。
那么推荐的方式是什么?选择哪个候选人以及为什么?
答案 0 :(得分:3)
许多参数永远不会很好处理,我个人会选择候选人2,因为它更具可扩展性。您可以使用验证逻辑来补偿“混乱”,确保所有必需参数都已正确设置。
- 在我看来 - 最好的方法是重构代码并将方法拆分成几个可能可链接的部分,以减少复杂性。
可能还有一个不错的选择是使用Value Objects(有时也使用数据传输对象)来传递某种“容器”中的所有参数。通过这种方式,可以确保只传递有效数据,因为Value Object会关注其内容。