[@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.
- Управляющие конструкции не равнозначны. Выбирайте конструкцию, наиболее подходящую для данного участка кода.