[@McConnell2004]

  • Используют ли выражения идентификаторы true и false, а не 1 и 0?
  • Сравниваются ли логические значения с true и false неявно?
  • Сравниваются ли числовые значения со своими тестовыми значениями явно?
  • Выполнено ли упрощение выражений с помощью введения новых логических переменных, использования логических функций и таблиц решений?
  • Составлены ли логические выражения позитивно?
  • Сбалансированы ли пары скобок?
  • Используются ли скобки везде, где они необходимы для большей ясности?
  • Заключены ли логические выражения в скобки целиком?
  • Написаны ли условия в соответствии с расположением чисел на числовой прямой?
  • Используются ли в программах на Java выражения вида a.equals(b), а не а == b там, где это необходимо?
  • Очевидно ли применение пустых операторов?
  • Выполнено ли упрощение глубоко вложенных выражений с помощью повторной проверки части условия, преобразования в операторы if-then-else или case, перемещения части кода в отдельные методы, преобразования с использованием более объектно-ориентированной модели или они были улучшены как-то иначе?
  • Если метод содержит более 10 точек принятия решения, есть ли хорошая причина, чтобы не перепроектировать его?

Ключевые моменты

  • Упрощение и облегчение чтения логических выражений вносит существенный вклад в качество вашего кода.
  • Глубокая вложенность затрудняет понимание метода. К счастью, вы сравнительно легко можете ее избежать.
  • Структурное программирование — это простая, но все еще злободневная идея: вы можете построить любую программу с помощью комбинации последовательностей, выборов и итераций.
  • Уменьшение сложности — ключ к написанию высококачественного кода.