Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
去年关闭。
每当我需要三个以上的参数时,我总是对函数使用一个数组参数。
示例:考虑这样的函数调用。
我总是喜欢下面的一个。
优势(我可能错了):
a)可以增加更多的参数
b)可读性
c)订单可以轻松更改
d)默认参数处理更容易
坏处 :
a)特别是当我们的参数少于3-4个时,代码长度会增加。
谁能帮我知道使用array参数的更多缺点吗?
每当我更改其他开发人员代码时(就像我现在要做的那样),我就会觉得使用
尽管我已经给出了PHP的示例,但是我也可以用其他语言找到它。
谢谢。
作为数组的单个参数可能仅在传递某种静态配置时才真正发光。您可以使用它来将某些东西的配置与实际代码分开,从而使修改配置变得更加容易。同时,您利用了不必以非常特定的顺序发送20个参数这一事实。
在您的情况下,您给出的参数列表千差万别,篇幅太长,这表明您的函数执行的太多了。它的一部分可能应该移到构造函数,一部分应该应该移到某种
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
去年关闭。
每当我需要三个以上的参数时,我总是对函数使用一个数组参数。
示例:考虑这样的函数调用。
processSecondStage($stepTitle, $round, $entryId, $formId, $stepType, $stepAfterApproved, $assigneees, $stageToMove);
我总是喜欢下面的一个。
processSecondStage(array( 'stepTitle' => $title, 'round' => $round, 'stepAfterApproved' => $stepAfterApproved, 'entryId' => $_entryId, 'assigneees' => (array)$_POST['flow-asignee'], 'stageToMove' => $currentStep, 'formId' => $targetFormId, 'stepType' => 'approval'));
优势(我可能错了):
a)可以增加更多的参数
b)可读性
c)订单可以轻松更改
d)默认参数处理更容易
坏处 :
a)特别是当我们的参数少于3-4个时,代码长度会增加。
谁能帮我知道使用array参数的更多缺点吗?
每当我更改其他开发人员代码时(就像我现在要做的那样),我就会觉得使用
array
作为参数存在一些主要缺点,因为如果不是这种情况,那应该是一种标准做法。尽管我已经给出了PHP的示例,但是我也可以用其他语言找到它。
谢谢。
最佳答案
当您要传递的内容紧密相关且没有意义时,数组可用作参数。一个经典的例子是由Color
,blue
,green
(可能还有red
)定义的gamma
。将这些参数组合成一个数组(或javascript中的对象),可以轻松地将其换出。
始终将数组用作函数的单个参数会使您松散IDE可以给您的参数列表。对于阅读代码的人来说,弄清楚需要传递给函数的内容真是一个地狱。这也为将来的发展打开了大门(哦,这个功能只为我煮咖啡,但是如果我添加另一个可选参数,它也可以让我喝茶。哦,也许我可以让它为我做饭。为什么不添加也可以订购攻击直升机的功能)。
在常规参数列表中,您可以通过引用(function pushElement(array &$sortableArray, $element)
)传递内容。如果可能的话,在常规数组中也不希望这样做。
关于默认值的一点是有争议的。普通参数列表允许类型提示和默认值:
function action(string $action = 'tickle', string $target = 'Polar bear') {
print "I {$action} a {$target}";
}
作为数组的单个参数可能仅在传递某种静态配置时才真正发光。您可以使用它来将某些东西的配置与实际代码分开,从而使修改配置变得更加容易。同时,您利用了不必以非常特定的顺序发送20个参数这一事实。
在您的情况下,您给出的参数列表千差万别,篇幅太长,这表明您的函数执行的太多了。它的一部分可能应该移到构造函数,一部分应该应该移到某种
Form
类。关于javascript - 使用数组作为参数的缺点? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50189161/