Найти и заменить все подходящие строки в текстовой области

Как и многие другие, я часто предпочитаю передавать функцию 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!»
13
задан Anthony Grist 10 January 2012 в 19:21
поделиться