是否存在关于将参数作为单个变量发送或将参数数组发送到函数/方法的一般良好惯例约定?
EG。
param1, param2, param3 vs array data
如何确定两者中的哪一个使用,或两者兼而有之?
答案 0 :(得分:1)
我的经验法则是,只要您有两个以上的参数,就应该切换到传递某种类型的聚合(Array,Hash,Object,Record等)。如果它是一个或两个主要参数和几个选项的情况,那么只将选项放入聚合中并将原色保留在它们自己的参数中。
答案 1 :(得分:0)
当你询问一系列参数时,我假设你在讨论的是所有相同类型(或类似类型)的参数。这实际上取决于具体情况,并且在调用者的便利性和功能实现的便利性之间有点折衷。这意味着它很大程度上取决于您最想要优化的内容。没有严格的规则,但您可以将这种思维作为指导:
在以下情况下使用单独的参数:
在以下情况下使用数组:
如果没有构建函数来获取数组,调用者通常可以使用.apply()
解决问题,但调用者在数组中有参数。
仅供参考(虽然我认为这不是您问题的主题),但另一种选择是传递具有可变数量属性的对象。当有许多不同的参数且大多数或全部都是可选的时,options对象特别有用。被调用的函数可以包含所有选项的默认值,调用者只需传递他们想要覆盖默认值的参数即可。对于可以在数组中或作为参数列表更好地表示的相同类型的参数的可变数量,options对象通常不是最佳解决方案。