和其他许多人一样,我通常更喜欢通过options object
传递给函数而不是传递一长串参数,但这实际上取决于确切的上下文。
我使用代码可读性作为试金石。
例如,如果我有这个函数调用:
checkStringLength(inputStr, 10);
我认为代码本身就具有很好的可读性,并且传递单个参数就可以了。
另一方面,有些函数的调用如下:
initiateTransferProtocol("http", false, 150, 90, null, true, 18);
除非你做一些研究,否则完全无法阅读。另一方面,这段代码读起来很好:
initiateTransferProtocol({
"protocol": "http",
"sync": false,
"delayBetweenRetries": 150,
"randomVarianceBetweenRetries": 90,
"retryCallback": null,
"log": true,
"maxRetries": 18
});
它更像是一门艺术而不是一门科学,但如果我必须说出经验法则:
如果出现以下情况,请使用选项参数:
- 您有四个以上的参数
- 任何参数都是可选的
- 您曾经必须查找函数才能找出它需要哪些参数
- 如果有人试图勒死你,同时尖叫“ARRRRRG!”