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