Ранний выход/возврат

Если встречаете вот такой код:

Если (Условие) Тогда // Дальше выполняется // какой-то длинный код // с множеством методов КонецЕсли;

Или вот такой:

Если (Условие) Тогда Если Не (ДругоеУсловие) Тогда // Дальше выполняется // какой-то длинный код // с множеством методов КонецЕсли; КонецЕсли;

В нем можно легко запутаться, так как нужно постоянно держать в голове контекст выполнения условия. А если код еще и длинный, то можно забыть, что за условия были вверху.

Вместо этого лучше использовать ранний выход или охранные выражения:

Если Не (Условие) Или (ДругоеУсловие) Тогда Возврат; КонецЕсли; // Дальше выполняется какой-то длинный код

Такой код проще читать. Он вначале задает условия прежде чем переходить к детялям. В этом случае у нас не будет лишней вложенности.

Пример:

Код:

Если ЭтоНовый Тогда Если Не ЭтоГруппа Тогда ПодготовитьФормуОбъекта(); УстановитьСвойстваТабличнойЧасти(); УправлениеФормой(); // Еще какой-то код КонецЕсли; КонецЕсли;

меняем на:

Если Не ЭтоНовый Или ЭтоГруппа Тогда Возврат; КонецЕсли;

ПодготовитьФормуОбъекта(); УстановитьСвойстваТабличнойЧасти(); УправлениеФормой(); // Еще какой-то код

Особенности:

1. Если проверок становится много (больше 5), то лучше их выделить в отдельную функцию условие:

Если Не НужноОбработатьОбъект() Тогда Возврат; КонецЕсли; // Дальше выполняется // какой-то длинный код // с множеством методов

2. Будьте внимательны с кодом:

Если (Условие) Тогда // Какой-то код КонецЕсли; // Дальше другой код

В этом случае использование раннего выхода не всегда оправдано.

3. Лучше выделять условия по одному, чтобы не запутаться и не потерять. Допустимо сначала сделать последовательные условия, например:

Если (Условие) Тогда Возврат; КонецЕсли; Если Не (ДругоеУсловие) Тогда Возврат; КонецЕсли; // Дальше выполняется // какой-то длинный код // с множеством методов

Лайк, шер, сабскрайб, репост