Я знаю, что это может быть очень специфично для конкретного случая, но я слишком часто задаюсь этим вопросом. Есть ли вообще предпочтительный синтаксис.
Я не спрашиваю, каков наилучший подход, когда в функции, я спрашиваю, должен ли я выйти рано или просто не вызывать функцию.
Обтекание, если вокруг вызова функции
if (shouldThisRun) {
runFunction();
}
Есть ли ( охранник ) в функции
runFunction() {
if (!shouldThisRun) return;
}
Последний вариант, очевидно, может уменьшить дублирование кода, если эта функция вызывается несколько раз, но иногда неправильно добавлять ее сюда, так как тогда вы можете потерять функцию единственной ответственности .
Вот пример
Если у меня есть функция updateStatus (), которая просто обновляет статус чего-либо. Я только хочу обновить статус, если статус изменился. Я знаю места в моем коде, где статус может измениться, и я знаю другие места, где он вызывающе изменился.
Я не уверен, что это только я, но мне кажется несколько грязным проверить эту внутреннюю функцию, так как я хочу сохранить эту функцию как можно более чистой - если я ее вызываю, я ожидаю, что статус будет обновлен. Но я не могу сказать, лучше ли обернуть звонок в чек, в тех немногих местах, где я знаю, есть вероятность того, что он не изменился.