Неудобно проверять, возвращает ли логическое условие логическое значение
TL;DR: не возвращайте явные логические значения. Большинство логических значений — это запахи кода.
Проблемы
- декларативность
- Код ниндзя
- Внедряющие решения
Решения
- Верните логическое предложение вместо проверки отрицания.
- Ответ должен быть формулой бизнес-логики, а не алгоритмом.
Контекст
При работе с булевыми формулами более читабельно показать бизнес-логическую формулу, чем вводить предложение IF с отрицанием.
Программисты склонны возвращать случайные имплементационные решения вместо реальных бизнес-правил.
Образец кода
Неправильный
function canWeMoveOn() {
if (work.hasPendingTasks())
return false;
else
return true;
}
Верно
function canWeMoveOn() {
return !work.hasPendingTasks();
}
Обнаружение
[Х] Автоматически
Основываясь на синтаксических деревьях, мы можем безопасно рефакторить код.
Теги
- логический
Заключение
Остерегайтесь возвращаемых логических значений.
После возврата вам понадобится оператор If, который также является запахом кода.
связи
Больше информации
- Как избавиться от надоедливых «если навсегда»
Кредиты
Спасибо Нико К. за это предложение.
Не важно, чтобы все получилось правильно с первого раза. Крайне важно сделать все правильно в последний раз.
Эндрю Хант
Эта статья является частью серии CodeSmell.