Неудобно проверять, возвращает ли логическое условие логическое значение

TL;DR: не возвращайте явные логические значения. Большинство логических значений — это запахи кода.

Проблемы

  • декларативность
  • Код ниндзя
  • Внедряющие решения

Решения

  1. Верните логическое предложение вместо проверки отрицания.
  2. Ответ должен быть формулой бизнес-логики, а не алгоритмом.

Контекст

При работе с булевыми формулами более читабельно показать бизнес-логическую формулу, чем вводить предложение IF с отрицанием.

Программисты склонны возвращать случайные имплементационные решения вместо реальных бизнес-правил.

Образец кода

Неправильный

function canWeMoveOn() {
  if (work.hasPendingTasks())
    return false;
  else
    return true;
}

Верно

function canWeMoveOn() {
  return !work.hasPendingTasks();
}

Обнаружение

[Х] Автоматически

Основываясь на синтаксических деревьях, мы можем безопасно рефакторить код.

Теги

  • логический

Заключение

Остерегайтесь возвращаемых логических значений.

После возврата вам понадобится оператор If, который также является запахом кода.

связи













Больше информации

Кредиты

Спасибо Нико К. за это предложение.

Не важно, чтобы все получилось правильно с первого раза. Крайне важно сделать все правильно в последний раз.

Эндрю Хант



Эта статья является частью серии CodeSmell.