Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Говнокод
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Общий раздел > Офф-топик
Vofka
Набрел недавно на сайт один, хочу поделиться с вами. Сайт называется Говнокод: необходимо зарегистрироваться для просмотра ссылки . Есть бредовые посты, но есть и улыбательные smile.gif
Fynjy
Цитата(Vofka @ 12.01.12, 11:25) необходимо зарегистрироваться для просмотра ссылки
Набрел недавно на сайт один, хочу поделиться с вами. Сайт называется Говнокод: необходимо зарегистрироваться для просмотра ссылки . Есть бредовые посты, но есть и улыбательные smile.gif

Все мы пишем порой гонокод ... Иной раз нужно за 5 минут что то реализовать и получается что то
Родитель.Родитель.Родитель.Родитель.Родитель. вместо рекурсии ...
Вот минут 30 назад написал ...
    ~Метка:Если Не ПустаяСтрока(Результат) Тогда
        ПолучитьСерверТО().ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма);
    КонецЕсли;

    Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();

    Если Не ПустаяСтрока(Результат) Тогда
        Перейти ~Метка;
    КонецЕсли;

Ужасно с goto, но какие задачи и сроки такое и решение ...
Ardi
Ай яй яй. Нужно было закладывать на эти строки не менее 5000$ бюджета. Вот из-за того что 1с-ники экономят деньги заказчиков у них и не хватает денег на хаммер с водителем.
Vofka
Цитата(Fynjy)
Вот минут 30 назад написал ...


По-моему, так будет лучше wink.gif :
Пока Истина Цикл
    Если Не ПустаяСтрока(Результат) Тогда
        ПолучитьСерверТО().ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма);
    КонецЕсли;
    Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
    Если ПустаяСтрока(Результат) Тогда
        Прервать;
    КонецЕсли;
КонецЦикла
Fynjy
Цитата(Vofka @ 12.01.12, 15:38) необходимо зарегистрироваться для просмотра ссылки
По-моему, так будет лучше wink.gif :
Пока Истина Цикл
    Если Не ПустаяСтрока(Результат) Тогда
        ПолучитьСерверТО().ОбработатьВведенныйШтрихкод(Результат, ЭтаФорма);
    КонецЕсли;
    Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
    Если ПустаяСтрока(Результат) Тогда
        Прервать;
    КонецЕсли;
КонецЦикла

Вечный цикл меня пугает больше гоуту smile.gif
Vofka
Цитата
Вечный цикл меня пугает больше гоуту smile.gif

Так с гоуту тот же бесконечный цикл может получиться smile.gif . По идее оба примера будут работать одинаково и выполнятся одинаковое количество раз. Просто я, например, никогда гоуту не использовал: или рекурсию или подобного рода циклы. smile.gif
Batchir
Рекурсия это вещь, всегда использую при работе с деревьями

Процедура ОбработатьДерево()
      Для Каждого СтрокаДерева Из НашеДерево.Строки Цикл
            ОбработатьСтрокуДерева(СтрокаДерева);
      КонецЦикла;
КонецПроцедуры;

Процедура ОбработатьСтрокуДерева(СтрокаДерева)
      // Выполняем какие-то действия над строкой
      // Выполняем какие-то действия над строкой
      // Выполняем какие-то действия над строкой

      // И запускаем рекурсивно обработку строк
      Для Каждого СтрокаСтроки Из СтрокаДерева.Строки Цикл
            ОбработатьСтрокуДерева(СтрокаСтроки);
      КонецЦикла;
КонецПроцедуры;
Fynjy
Цитата(Batchir @ 13.01.12, 9:06) необходимо зарегистрироваться для просмотра ссылки
Рекурсия это вещь, всегда использую при работе с деревьями

Процедура ОбработатьДерево()
      Для Каждого СтрокаДерева Из НашеДерево.Строки Цикл
            ОбработатьСтрокуДерева(СтрокаДерева);
      КонецЦикла;
КонецПроцедуры;

Процедура ОбработатьСтрокуДерева(СтрокаДерева)
      // Выполняем какие-то действия над строкой
      // Выполняем какие-то действия над строкой
      // Выполняем какие-то действия над строкой

      // И запускаем рекурсивно обработку строк
      Для Каждого СтрокаСтроки Из СтрокаДерева.Строки Цикл
            ОбработатьСтрокуДерева(СтрокаСтроки);
      КонецЦикла;
КонецПроцедуры;

Никто не отрицает, но для разового решения писать красивый код иной раз и не нужно ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.