我对 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 也非常诱人,因为现在参数的顺序变得无关紧要(因此是方法签名),但我担心调试会变得很痛苦。
那么推荐的方式是哪种?选择哪位候选人以及为什么?
最佳答案
很多参数都不好处理,我个人会选择候选 2,因为它更具可扩展性。您可以通过验证逻辑来补偿“困惑”,以确保所有必需的参数均已正确设置。
在我看来,最好的方法是重构代码并将方法拆分为几个可能可链接的部分,从而降低复杂性。
使用 Value Objects 可能也是一个不错的选择(或者有时也称为数据传输对象),以在某种“容器”中传递所有参数。这样,就确保了只有有效的数据可以被传递,因为值对象本身关心它的内容。
关于php - 方法参数的首选做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13335109/