fixin (fixin) wrote,
fixin
fixin

Category:

Парадокс: Читаемость кода за счет лишних прогонов

У меня был вот такой код, где выполнялось по выбору пользователя N обработок.

И в конце нужно было выдать пользователю подтверждение, какие обработки выполнены.

Сначала я написал код так, но это было неправильно:


Сообщение = "";
Для Каждого
Эл Из МассивОбрабатываемыхЭлементов
 Если НужнаОбработка1 Тогда
 
Сообщение = Сообщение + "Обработка 1" + Символы.ПС;
 
ВыполнитьОбработку1();
 КонецЕсли;
 Если
НужнаОбработка2 Тогда
 
Сообщение = Сообщение + "Обработка 2" + Символы.ПС;
 
ВыполнитьОбработку2();
 КонецЕсли;
 ...
 Если
НужнаОбработкаN Тогда
 
Сообщение = Сообщение + "Обработка N" + Символы.ПС;
 
ВыполнитьОбработкуN();
 КонецЕсли;
КонецЦикла;

Предупреждение("Над " + МассивОбрабатываемыхЭлементов.Количество() + " объектов выполнены обработки:" + Символы.ПС + Сообщение);

Потому что список выполненных обработок повторялся столько раз, сколько в массиве элементов.

Я решил не переписывать код, а вставить в начало цикла строку:


Сообщение = "";

Как вариант, облагородить код можно было бы и по другому:

Добавлять в сообщение строки только на первом прогоне цикла.

Сформировать строку сообщения отдельно от цикла.

Но тогда бы это было более громоздким, вот в чем парадокс. А как бы вы решили эту задачу?

Только не предлагайте все условия и ссылки на обработки загнать в массив. Это очевидное решение, но читается тоже так себе, потому что в 1с нет ссылки на функцию, есть только метод EVAL, выполняющий строку кода. Хотя вариант, конечно.

Tags: , Хороший стиль программирования
Subscribe
promo fixin december 31, 2037 16:57 1417
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 28 comments