Иногда от посторонних людей достаются большие процедуры, от которых появляется большая головная боль.
Например, когда мне досталась на переработку километровая процедура 1С. В целом, она выглядела примерно так:
Стоит отметить, что исходная страшилка имела примерно те же уровни вложенностей, но не умещалась и на 4 экранах. Плюс к этому, табуляция хромала… сказать по правде, настроение упало ниже плинтуса, когда понадобилось найти границы блоков «Если … КонецЕсли». С табуляцией разобрался, процедуру урезал до следующего вида:
Поначалу хотел и третий блок кода вынести из проверки, но передумал. Читабельность, на мой взгляд, от такого только ухудшается. Насчёт Условие2 ещё можно подумать. А вот первую и третью проверки, на мой взгляд, грех не сократить.
Почему-то, команда выхода из процедуры (или возврата к началу цикла) всё равно не всегда и не всеми приветствуется. Даже тогда, когда была бы нагляднее и в целом уместнее, чем лишний таб до конца процедуры. А впрочем, не даром что одному хорошо, то другому — смерть. Может просто у меня такой неправильный вкус.
P.S. А что, в блоке
Добавлено 27-10-2007 20:30
Подумал, и решил, что для меня лучший вариант — фильтр входных условий и вложенность последующих, т.е.
Upd @ 07.11.07
Кстати, в том же Пёрле, кажется, вполне приветствуется своевременная суицидальность скриптов, если условие не выполняется —
Например, когда мне досталась на переработку километровая процедура 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