Условный оператор

Angle — условный оператор в Delphi: что вы получаете и о чём стоит знать
Условные конструкции в Delphi (if ... then ... else) — фундаментальный инструмент ветвления. В рамках подхода Angle мы даём чёткие гарантии и указываем на возможные риски, чтобы ваше решение было осознанным и надёжным.
Гарантии: что вы получаете без компромиссов
- Предсказуемое выполнение: условие вычисляется строго слева направо, короткое замыкание (short‑circuit) включено по умолчанию — если первая часть условия ложна, вторая не проверяется.
- Совместимость с синтаксисом Object Pascal: конструкция if ... then ... else работает одинаково во всех версиях Delphi (от 7 до 2026). Никаких скрытых «фич».
- Поддержка вложенных ветвлений: можно безопасно вкладывать операторы друг в друга — компилятор явно разрешает неоднозначности (else относится к ближайшему then).
- Полный контроль над типами: условие — всегда булево выражение (Boolean). Ошибка приведения типов исключена, если вы не используете устаревшие Integer‑флаги.
Риски: что может пойти не так и как это решается
- Риск «висячего else»: при пропуске точки с запятой или неправильной расстановке begin … end. Решение: всегда явно обрамляйте тело ветки в begin … end, даже если там одна строка.
- Риск избыточного копирования: повтор одинакового кода в then и else. Решение: выносите общую логику до или после условного блока, используйте тернарную функцию IIf из модуля StrUtils для простых присваиваний.
- Риск путаницы с оператором присваивания: = в условии вместо := в теле — классическая ошибка. Решение: включите варнинги компилятора на максимальный уровень (Hints and Warnings).
- Риск производительности при частых проверках: длинная цепочка if ... else if может быть медленнее, чем case или таблица переходов. Решение: для более чем 3–4 вариантов используйте case.
Проверка выбора: на что смотреть, чтобы не пожалеть
- Форматирование кода: выравнивайте then/else по одной вертикали. Это сразу показывает структуру ветвления.
- Тестирование граничных условий: проверьте else‑ветку для значений, которые «не могут появиться». В Delphi она отработает как пустая ветвь или ошибка, если вы её забыли.
- Чтение байт‑кода: при наличии сомнений в скорости — посмотрите ассемблерный листинг (CPU View). Компилятор Delphi генерирует эффективные переходы, но вложенные if могут давать неоптимальный код.
- Анализ зависимостей: убедитесь, что условие не вызывает побочных эффектов (например, изменение глобальной переменной). В противном случае короткое замыкание приведёт к неожиданному поведению.
Условный оператор в Delphi — мощный и предсказуемый инструмент. Следуя гарантиям Angle и учитывая описанные риски, вы сможете писать стабильные и легко поддерживаемые ветвления без сожалений в будущем.
Добавлено: 27.04.2026
