aw *_*rud 10 javascript php parameters
在大多数其他面向对象的语言中.让每个函数接收一个对象的关联数组而不是枚举方法签名中的每一个都是亵渎神灵的.但是,为什么这两种语言在大多数流行框架中都可以接受并且常用呢?
除了希望有简洁的方法签名之外还有一些理由吗?
我确实看到了一个好处 - 随着新的可选参数的添加,API可以保持不变.但是Javascript和PHP已经在其方法签名中允许可选参数.如果有的话,似乎Java或其他OO语言将从中受益更多......但我很少在那里看到这种模式.
是什么赋予了?
Jag*_*age 10
在我看来,很多这些功能都在他们接受的论点数量上攀升,超过10个并不罕见.即使您执行可选参数,仍然必须按顺序发送它们.
考虑一下这样的函数:
function myFunc(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13){
//...
}
Run Code Online (Sandbox Code Playgroud)
假设您只想使用参数3和11.这是你的代码:
myFunc(null, null, null, 'hello', null, null, null, null, null, null, null, 'world');
Run Code Online (Sandbox Code Playgroud)
你不宁愿只是:
myFunc({
a3 : 'hello',
a11 : 'world'
});
Run Code Online (Sandbox Code Playgroud)
?
主要原因是这些特定语言根本不支持同一函数名称的多个调用约定。IE 不能执行以下操作:
public function someFunc(SomeClass $some);
public function someFunc(AnotherClass $another);
public function someFunc(SomeClass $some, AnotherClass $another);
Run Code Online (Sandbox Code Playgroud)
因此,您必须找到另一种方法来创建更简单的方法来传递变量,在 PHP 中我们最终选择了这种方法,someFunc(array('some'=>$some, 'another'=>$another))因为这是唯一方便的方法。在 JavaScript 中,我们最终使用对象,这并没有那么糟糕:someFunc({some: something, another: anotherthing})
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |