Иногда от посторонних людей достаются большие процедуры, от которых появляется большая головная боль.
Например, когда мне досталась на переработку километровая процедура 1С. В целом, она выглядела примерно так:

Процедура Проверка()
    Если (Условие1) Тогда
        // первый блок
        // кода
        Если (Условие2) Тогда
            Для Переменная = 1 По Справочник() Цикл
                Если (Условие3) Тогда
                    // второй блок
                    // кода
                    Если (Условие4) Тогда
                        // третий блок
                        // кода
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры


Стоит отметить, что исходная страшилка имела примерно те же уровни вложенностей, но не умещалась и на 4 экранах. Плюс к этому, табуляция хромала… сказать по правде, настроение упало ниже плинтуса, когда понадобилось найти границы блоков «Если … КонецЕсли». С табуляцией разобрался, процедуру урезал до следующего вида:

Процедура Проверка()
    Если (Не Условие1) Тогда
        Возврат;
    КонецЕсли;

    // первый блок
    // кода

    Если (Не Условие2) Тогда
        Возврат;
    КонецЕсли;

    Для Переменная = 1 По Справочник() Цикл
        Если (Не Условие3) Тогда
            Продолжить;
        КонецЕсли;

        // второй блок
        // кода

        Если (Условие4) Тогда
            // третий блок
            // кода
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры


Поначалу хотел и третий блок кода вынести из проверки, но передумал. Читабельность, на мой взгляд, от такого только ухудшается. Насчёт Условие2 ещё можно подумать. А вот первую и третью проверки, на мой взгляд, грех не сократить.

Почему-то, команда выхода из процедуры (или возврата к началу цикла) всё равно не всегда и не всеми приветствуется. Даже тогда, когда была бы нагляднее и в целом уместнее, чем лишний таб до конца процедуры. А впрочем, не даром что одному хорошо, то другому — смерть. Может просто у меня такой неправильный вкус.

P.S. А что, в блоке <code> уже запрещено подкрашивать текст? Жаль, смотрелось приятнее)

Добавлено 27-10-2007 20:30
Подумал, и решил, что для меня лучший вариант — фильтр входных условий и вложенность последующих, т.е.
Процедура Проверка()
    Если (Не Условие1) Тогда
        Возврат;
    КонецЕсли;

    // первый блок
    // кода

    Если (Условие2) Тогда
      Для Переменная = 1 По Справочник() Цикл
          Если (Не Условие3) Тогда
              Продолжить;
          КонецЕсли;

          // второй блок
          // кода

          Если (Условие4) Тогда
              // третий блок
              // кода
          КонецЕсли;
      КонецЦикла;
    КонецЕсли;
КонецПроцедуры


Upd @ 07.11.07
Кстати, в том же Пёрле, кажется, вполне приветствуется своевременная суицидальность скриптов, если условие не выполняется — die "Reason" :-D