Сама конструкция if — концептуально то же самое, что демультиплексор из главы 14: направляет ход выполнения программы по одному из путей в зависимости от значения условия.
Синтаксис отличается между языками в деталях (фигурные скобки в C-подобных языках, отступы в Python), но логика идентична — маршрутизация выполнения по ровно одному из предусмотренных путей.
Одну и ту же логику можно выразить вложенными if внутри if, либо одним условием, объединённым через И/ИЛИ (глава 16). Объединённое условие часто читается компактнее для простых случаев, вложенность иногда яснее показывает иерархию логики для более сложных, многоуровневых решений — выбор между ними в первую очередь про читаемость кода, а не про правильность.
Компактная однострочная запись простого if/else, доступная во многих языках — уместна именно для простых случаев, где полноценный многострочный if/else избыточен.
Конструкция switch (или match в некоторых современных языках) — альтернативный синтаксис для выбора одного из многих путей по значению переменной, концептуально близкий к декодеру из главы 14: одно входное значение однозначно определяет, какая именно ветвь кода выполнится.
Иногда условие читается заметно понятнее, если инвертировать его и поменять местами ветки if/else, чем оставить как есть с более сложным исходным условием — практический приём, подробно раскрываемый в следующей главе через законы Де Моргана.
if x == true работает, но избыточно и менее читаемо, чем просто
if x — переменная x уже булева, дополнительное сравнение с true ничего не
добавляет к смыслу, только удлиняет код.
В языках вроде C, JavaScript, PHP случайное написание if (x = 5) вместо
if (x == 5) — реальный, распространённый источник ошибок: одиночный знак
равенства присваивает значение 5 переменной x (и попутно само выражение присваивания
обычно расценивается как истинное), а не сравнивает её с числом 5. Опечатка в один символ,
способная привести к трудноуловимой ошибке в поведении программы.
Следующая глава — законы Де Моргана в контексте кода: конкретный практический приём упрощения запутанных условий, обещанный чуть выше в этой главе.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.