每个参数的优缺点是什么?分别接受参数与数组
例如:my_func(a,b,c,d,e)vs my_func(params)。
一般来说,我喜欢前者,因为intellisense可以为使用IDE的人检测到它。而使用第二种方法则需要开发人员查找文档。不过,我注意到Facebook的JS SDK大量使用后者。
每个参数的优缺点是什么?分别接受参数与数组
例如:my_func(a,b,c,d,e)vs my_func(params)。
一般来说,我喜欢前者,因为intellisense可以为使用IDE的人检测到它。而使用第二种方法则需要开发人员查找文档。不过,我注意到Facebook的JS SDK大量使用后者。
接受参数数组的一个明显优势是您可以自由添加(或删除!)新参数而不会影响现有实现,因为方法签名不会更改。
选择传递参数的另一个可能的原因数组是你可以模拟named parameters,它可以使得方法更加灵活,避免必须拥有一个接受大量参数的方法签名。
这取决于你传递了什么,如果它有一组相关参数,那么数组是有用的。许多jQuery插件将一组选项作为关联数组收集,然后收集其他方法。编写插件时我通常会这样做:
var options = { option1: 'stuff', option2: 'etc' };
$('#id').myPlugin(options, 'disengage');
其中第二个参数是您希望插件执行的操作。
确实,这是一个多参数方法。
正如人们在这里提到的,js对象(这里的一个数组并不像IMO那么好)的优点是函数签名变得灵活。并非JavaScript像其他语言一样强制执行此操作,但每次您要更改参数时都不必更改函数签名。
Facebook使用您带来的示例,每10分钟更换一次SDK和其他协议(我不喜欢使用Facebook的东西进行开发,他们的文档令人震惊,他们有一种虐待狂的倾向,没有向后兼容性的新版本的东西,虽然这不是这个咆哮的地方)。所以对他们来说,这会有所帮助。
一个区别,我在一些场景中找到有用的:
通常,当一个函数执行某种动作,有什么值功能应执行其任务定义参数。例如compare(3,4)
将对参数3
和4
执行相关算术运算。
另一组参数是定义函数如何表现的参数。例如compare(3,4,'strict')
。在这里,我没有将'strict'
与任何东西进行比较,而是该参数告诉函数我想执行特定类型的比较。
在这个例子中,似乎不大可能会改变,所以主题大多不相关,尽管对于更复杂的函数来说并非如此。我经常发现最“稳定”的参数是的值,函数的定义通常基于这个值。而行为参数更经常更改,更经常不存在。
除了使方法签名更“稳定”之外,它使代码更具可读性,因为在每次函数调用时,通常可以看到函数的操作数是什么,而不是单个对象,这更难了解和调试。
我真的不明白要结束的选票。这是一个编程QA站点,这个问题是关于特定的,非常具体的编程实践的最佳实践的合理问题。 Pro's和Con's主要是客观的,通常很容易区分高质量的答案和不好的答案。如果不在这里,在哪里? – davin 2011-05-19 14:50:13