Закоулки мозга

[@McConnell2004]

Операторы if-then

  • Очевиден ли номинальный путь выполнения кода?
  • Правильно ли выполняется ветвление при проверке if-then на равенство?
  • Присутствует и задокументирован ли блок else?
  • Корректен ли блок else?
  • Правильно ли расположены блоки if и else — нет ли инверсии?
  • Следует ли нормальный вариант после if, а не после else?

Последовательности if-then-else-if

  • Преобразуются ли сложные проверки в вызовы логических функций?
  • Проверяются ли наиболее вероятные случаи первыми?
  • Все ли варианты учитываются?
  • Является ли последовательность if-then-else-if лучшей реализацией или лучше использовать оператор case?

Операторы case

  • Разумно ли отсортированы варианты в операторе case?
  • Сделаны ли действия, выполняемые для каждого варианта, простыми, например, с помощью преобразования в методы в случае необходимости?
  • Проверяет ли оператор case реальную переменную, а не искусственно созданную, приводящую к неправильному использованию оператора case?
  • Корректны ли значения, обрабатываемые в блоке по умолчанию?
  • Используется ли блок по умолчанию для выявления ошибок и сообщения о непредвиденных ситуациях?
  • В языках С, C++ или Java содержит ли каждый блок case команды для выхода (break)?

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

  • В простых выражениях if-else обращайте внимание на порядок блоков if и else, особенно если они обрабатывают множество ошибок. Убедитесь, что номинальный вариант прослеживается ясно.
  • Для последовательностей if-then-else и операторов case выбирайте порядок, позволяющий улучшить читабельность.
  • Для перехвата ошибок используйте блок по умолчанию в операторе case или последний блок else в цепочке операторов if-then-else.
  • Управляющие конструкции не равнозначны. Выбирайте конструкцию, наиболее подходящую для данного участка кода.