Как и многие другие, я часто предпочитаю передавать функцию 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
});
Это скорее искусство, чем наука, но если бы мне пришлось называть эмпирические правила:
Использовать параметры параметр, если: