Имя: Пароль:
   
IT
 
Используете Goto (переход по метке)?
Ø (Волшебник 09.12.2020 10:48)
0 Zapal
 
04.12.20
10:32
1. нет! Код должен быть идеален! 46% (26)
2. почти никогда, но пару раз было 30% (17)
3. да! Свободно и без ограничений 18% (10)
4. да, но только когда никто не видит 7% (4)
Всего мнений: 57

немного предыстории, возможно кто-то не в курсе. Считается что использование этой конструкции показывает низкое качество кода. В некоторых языках его просто запретили

написал вот я его недавно и задумался - я один такой плохой или нас много? Насколько это явление вообще распространено в одинэсной среде? В типовых вроде не припомню, возможно им там тоже запретили

и да, давайте сразу договоримся - Прервать, Продолжить и Возврат это другое, здесь нет смысла делать опросы, их используют все. Речь конкретно о команде Перейти
1 ДенисЧ
 
04.12.20
10:32
5. Если очень хочется.
2 Noser2020
 
04.12.20
10:35
(0) Каждый день. Как же без него?

да! Свободно и без ограничений
3 Документовед
 
04.12.20
10:36
Один раз было. Несколько вложенных циклов из которых надо было выйти прервав выполнение.

почти никогда, но пару раз было
4 Noser2020
 
04.12.20
10:36
>В типовых вроде не припомню, возможно им там тоже запретили
В УПП 1.0 было, в паре отчётов (которые частично мимо построителя отчетов работали).
Вообще, это явно запрещено стандартами кодирования.
5 VladZ
 
04.12.20
10:37
Не использую.
Считаю, что можно использовать в случаях, когда по-другому никак. Там, где можно отказаться от "перейти" - нужно отказаться.

почти никогда, но пару раз было
6 Dzenn
 
04.12.20
10:37
GoTo - избитый фетиш программистской цивилизации, и его нужно уважать. Использую в двух случаях - 1) при настроении "гото", очень редко 2) при выходе из вложенных циклов.

почти никогда, но пару раз было
7 Lokli
 
04.12.20
10:38
Не использую. И даже не пытаюсь... :)

нет! Код должен быть идеален!
8 Noser2020
 
04.12.20
10:39
к (4) на тему запрета - оказывается наврал, только "не рекомендуется"
https://its.1c.ru/db/v8std/content/547/hdoc
9 acht
 
04.12.20
10:39
(8) Второй пункт там же дочитай
10 Bigbro
 
naïve
04.12.20
10:39
ни разу не понадобился )
хотя мой код далек от идеала))

нет! Код должен быть идеален!
11 ads55
 
04.12.20
10:39
При отладке, чтобы сразу перейти к нужной строке :)
Но в готовом решении - нет.

почти никогда, но пару раз было
12 Garykom
 
04.12.20
10:40
Не помню чтобы использовал уже лет 20
13 ДенисЧ
 
04.12.20
10:40
(9) Веб-клиент - это отдельная пестня
14 elCust
 
04.12.20
10:40
Не довожу логику программы до необходимости применения "Goto".

5. Мне не нравится голосовался ТС. Поэтому свой выбор.
15 acht
 
04.12.20
10:42
(13) Чойта?
16 Галахад
 
04.12.20
10:44
Выполнить.

Даже не знаю как тут можно без меток.

да! Свободно и без ограничений
17 Noser2020
 
04.12.20
10:46
(0) Если серьёзно, goto - это, конечно, очень яркий индикатор законченного быдлокодера (Другой вопрос что на java, например, его просто нет).
Но кому какое дело, ты ведь 1Сник, а не программист - так что пиши как удобнее, быстрее и пр.
Будет мешать - перепишешь (ну или кто-нибудь другой, кому будет мешать).
P.S. Прямо вот пятничные посиделки в кафе (не помню как называлось) на чистых прудах вспомнились ;)
P.P.S. Если что я не то чтобы серьезно, но и не совсем шучу.
18 Dzenn
 
04.12.20
10:46
А кстати, зачем рассказывать без примеров?) ВЫКЛАДЫВАЙТЕ СКРИНШОТЫ! :-)
19 ДенисЧ
 
04.12.20
10:47
(15) Тойта.
20 Андрей_Андреич
 
04.12.20
10:48
В далекой юности первый курсовой на Фортране рассыпал перфокарты. Собрал с распечатки, но ГоТо и метку перепутал местами. Программа зациклилась. Искал ошибку 2 недели по неопытности.

нет! Код должен быть идеален!
21 ДенисЧ
 
04.12.20
10:48
(17) @на java, например, его просто нет@
Зато есть break label. Что ничем не лучше
22 ДенисЧ
 
04.12.20
10:49
(18) Друг просит?
23 mikecool
 
04.12.20
10:49
пользовался, когда учился писать на 1с, ибо был глуп и неопытен

нет! Код должен быть идеален!
24 Paint_NET
 
04.12.20
10:50
Не использовал.
Считаю, что его применение - костыль, когда лень нормально код переписать. Можно, но не стоит.
25 Lama12
 
04.12.20
10:50
(17) Ну Java вообще какой-то кастрированный язык. ИМХО конечно. И как же без break с меткой?
(0) пока не сталкивался с ситуацией которую нельзя обойти без GoTo. Конечно иногда это получается громоздкий код, но зато сквозной.

нет! Код должен быть идеален!
26 pudher
 
04.12.20
10:51
Где пункт Своё? Я вот не использую, потому, что нет необходимости, а не потому, что код должен быть идеален.
27 Aleksey
 
04.12.20
10:51
(17) Ты сейчас писателей типовых быдлокодерам назвал? А ты азартен, Парамоша!
28 ptiz
 
04.12.20
10:52
Нет, конечно. В 1С 9.0 его быть не должно!

нет! Код должен быть идеален!
29 timurhv
 
04.12.20
10:53
Видел только при обфускации кода.
Если человек использует его, то либо проблема с мышлением, либо лень поправить сложную конструкцию / разовая задача (тут вопрос целесообразности потраченного времени).

нет! Код должен быть идеален!
30 Noser2020
 
04.12.20
10:53
(21)
>Зато есть break label. Что ничем не лучше
Согласен.
И встречается он на удивление (для меня) часто - видел в netty и jackson'е (понятно, может он в каждой второй библиотеке - но специально я всё-таки не искал ;)
31 Noser2020
 
04.12.20
10:57
> Ты сейчас писателей типовых быдлокодерам назвал?
Как минимум в массе своей goto в современных типовых нет, а может и вообще нет (да и в не современных особо не было).
Специально не искал, конечно, но не могу представить чтобы такое "простили" ;)
Речь, конечно. про "основные" типовые от фирмы 1С.
32 ReaLg
 
04.12.20
10:57
Когда только познакомился с программированием в школе - писали на бейсике на БКшках.
Там, вроде бы использовали GO TO.

Потом в универе уже была парадигма - GO TO использовать не надо. Ну, я как бы и привык, никогда не использовал.

Но недавно нужно было решить специфическую задачку - я покопался в инете и нашел реализацию алгоритма на VB. Как раз с кучей GO TO.

Ну и наплевался же я при переносе/дебаге.
Реально как с другой планеты код.
Я понимаю, что это просто другая парадигма/другой стиль, но очень непривычно и я бы не хотел в таком копаться все время :)

почти никогда, но пару раз было
33 Aleksey
 
04.12.20
11:00
(31)
Т.е. ты не искал, но точно знаешь. Ну ну... БП Проф/Корп 3.0.83.37 - найдено 24 раза
34 fisher
 
04.12.20
11:03
Пару раз было.

почти никогда, но пару раз было
35 Noser2020
 
04.12.20
11:03
(33)
>БП Проф/Корп 3.0.83.37 - найдено 24 раза
Ну что сказать - я был не прав. Прошу прощения.
Думал про них гораздо лучше.
36 lubitelxml
 
04.12.20
11:04
Было как-то на 7.7, можно обойтись без этого

почти никогда, но пару раз было
37 Mikeware
 
04.12.20
11:06
(31) В ЗиКе каком-то было. Но зик вообще "неочевидная штука"
38 Aleksey
 
04.12.20
11:10
КА - 11 раз

В современных типовых он встречается в одном единственном отчете - РегламентированныйОтчетПрибыльИностраннойОрганизации

Поэтому в БП, КА, ЕРП, т.е. там где этот отчет есть, есть и перейти.
А в УТ, ЗУП, УНФ - обошлись без перейти
39 1Сергей
 
04.12.20
11:14
Бить линейкой по пальцам за GOTO
                    (c) Ада Лавлейс
40 Малыш Джон
 
04.12.20
11:16
Фуфуфу! Вы же потом этими руками хлеб едите!

нет! Код должен быть идеален!
41 Zapal
 
04.12.20
11:16
мое мнение - бывают ситуации когда этот переход сильно упрощает код, а значит делает его более надежным

понятно что если очень захотеть то можно всё это засунуть в пару вложенных циклов или еще как-то, но от этой правильности и принципиальности больше вреда чем пользы если оно начинает создавать трудности

и да, всем которые "строго нет" - не забывайте про "Прервать, Продолжить и Возврат" которые суть тоже самое и которые вы по-любому пользуете

почти никогда, но пару раз было
42 fisher
 
04.12.20
11:21
(41) Очень странно равнять "Прервать, Продолжить и Возврат" с гоуту. Эти конструкции не мешают создавать хороший код.
А все разы, когда я использовал гоуту (на пальцах одной руки пересчитать) - это были костыли для костыльной логики. Которой по-хорошему не должно было быть, но это был вопрос меньшей крови.
43 sr77
 
04.12.20
11:21
1

да! Свободно и без ограничений
44 Zapal
 
04.12.20
11:24
(42) а я и не писал что мешают, я писал это они то же самое. Прерывают ход программы и перемещают её выполнение куда-то вдаль
по канонам идеального вместо Прервать ты должен написать условие и всю оставшуюся часть цикла засунуть в него
45 ДенисЧ
 
04.12.20
11:24
(39) Величайшей ошибкой было бы думать. (с) В.Ульянов
46 fisher
 
04.12.20
11:25
(42) + Другими словами, код с использованием гоуту не может быть хорошим. Но в некоторых кривых случаях хороший код написать не получается.
47 Волшебник
 
04.12.20
11:28
Профессиональному программисту разрешается использовать:

Перейти ~метка

запросы в цикле

Исключение КонецПопытки; без вывода текста ошибки.

литералы '00010101' и 86400 и другие коды символов

комментарии в тексте запроса
48 acht
 
04.12.20
11:28
А еще вместо goto можно использовать выбрасывание исключений и их перехват =)
49 Волшебник
 
04.12.20
11:29
(48) Это точно. Можно даже делить на ноль.
50 ДенисЧ
 
04.12.20
11:30
(46) "код с использованием гоуту не может быть хорошим"
Код и без использования перехода может быть нехорошим.

Так что переход тут - совершенно незначащая величина =>0
51 fisher
 
04.12.20
11:30
Вдруг кто-то еще не читал: http://catalog.mista.ru/1c/articles/966234/
52 Волшебник
 
04.12.20
11:31
(44) Это увеличит глубину вложенности и усложнит понимание программы.

А вот фраза "Перейти ~Выход;" будет непонятна только дебилам.
53 mdao
 
04.12.20
11:32
Как то неучтиво называть системных asm прогов быдлокодерами

почти никогда, но пару раз было
54 Zapal
 
04.12.20
11:32
(48) точно, еще исключения
55 Zapal
 
04.12.20
11:33
(52) ты голосуй, не стесняйся
пару раз терял уже девственность с этими метками? признавайся
56 PR
 
04.12.20
11:34
(0) Сжечь ведьму!
57 Волшебник
 
04.12.20
11:35
(55) Лично я их не использую, но я не ограничиваю себя.
Выход из глубокого вложенного цикла сразу на верхний уровень можно реализовать только меткой.
Выход на конец процедуры тоже приветствую. Это лучше, чем пачка выходов, разбросанных по тексту процедуры.
58 fisher
 
04.12.20
11:36
(44) Прервать и Продолжить и Возврат - делают переходы без потери контекста.
59 Zapal
 
04.12.20
11:36
но вообще я согласен с (47)
эти правила придумали чтобы молодежь не косячила, уберечь от основных ошибок так сказать. Если человек осознаёт последствия то он волен делать то что считает нужным
60 alkorolev
 
04.12.20
11:39
использую для алгоритмов, исполняемых через оператор "Выполнить", чтобы не путаться в ветвистых условиях. В данном случае Перейти ~Выход - аналог "возврата"

да, но только когда никто не видит
61 Волшебник
 
04.12.20
11:39
(59) Однозначно.
62 fisher
 
04.12.20
11:40
(50) Я стараюсь писать хороший код. И когда у меня это получается - гоуту там нет. А вот когда приходится выбирать между видами плохого кода, то в некоторых случаях плохой код с гоуту может выглядеть получше, чем плохой код без него.
63 Noser2020
 
04.12.20
11:41
(57)
>Выход из глубокого вложенного цикла сразу на верхний уровень можно реализовать только меткой.
Обычно это значит что стоит вынести вложенный цикл в отдельную функцию.
Бывает лень, конечно.
Но современные IDE это существенно упрощают.

>Это лучше, чем пачка выходов, разбросанных по тексту процедуры.
Есть ещё подход "раннего возврата" (см. например https://medium.com/swlh/return-early-pattern-3d18a41bba8)
Мне нравится существенно больше чем писать "правильный" код по Дейкстре с миллионом вложенных scope'ов.

Ну и "просто оставлю это здесь":
https://ru.wikipedia.org/wiki/Considered_harmful
64 Волшебник
 
04.12.20
11:44
(47)+ Добавлю что ещё разрешается профессиональному программисту:

комментирование кусков программы

отсутствие комментариев понятного программного кода

динамическое конструирование запросов, которые не открываются в Конструкторе

звёздочка в запросах

обращение к реквизитам через точку

поиск по полям без индексов

и другие интересные вещи
65 fisher
 
04.12.20
11:53
"Разрешено" то оно конечно "разрешено". Только если он этим злоупотребляет, то никакой он в жопу не профессиональный программист.
66 Волшебник
 
04.12.20
11:53
(65) Разумеется.
67 trooba
 
04.12.20
11:55
Я пару раз использовал, совсем недавно и, как щас помню 10-11 лет назад. Когда цикл в цикле около 10 раз и нужно сэкономить время и уйти в конец функции...

почти никогда, но пару раз было
68 polosov
 
04.12.20
11:56
(64) Ну так-то можно еще стековую машину 1С использовать напрямую
69 Zapal
 
04.12.20
12:01
(64) запросы которые не открываются в конструкторе это прям зло злое
я сейчас никогда такое не делаю, разве что по-молодости может
70 Ненавижу 1С
 
04.12.20
12:03
(57) "Выход из глубокого вложенного цикла сразу на верхний уровень можно реализовать только меткой."
можно организовать метод со всеми этими циклами и вместо goto использовать return
71 Fish
 
04.12.20
12:15
(70) Возврат вернёт тебя из процедуры. А когда нужно остаться в процедуре и выйти только из цикла - тогда только Перейти.
72 Волшебник
 
04.12.20
12:16
(70) "Возврат" в глубине процедуры — зло.
73 Ненавижу 1С
 
04.12.20
12:17
(71) еще раз - засовываешь это код в ОТДЕЛЬНЫЙ метод и выходишь из него, если надо
(72) если метод создан специально для этого, то не думаю, что зло
74 Ненавижу 1С
 
04.12.20
12:19
(72) зло это процедуры длиннее одного экрана, тут уж действительно и возврат в глубине зло и все остальное
75 trdm
 
04.12.20
12:20
Продолжить, прервать - это частные случаи goto.
Инструмент есть инструмент.
Можно конечно понтоваться, что пишещь без гоуту, но это просто понты и не более.

да! Свободно и без ограничений
76 Волшебник
 
04.12.20
12:26
(73) Профессиональному программисту можно и так:

Попытка

  Выполнить "Модуль = ОбщийМодуль.Брандашмыг";

Исключение // Брандашмыг ещё не подключили

  Модуль = ОбщийМодуль.Гейзенбаг;

КонецИсключения;
77 bolder
 
04.12.20
12:29
(0) What?Пятничная тема детектед)

нет! Код должен быть идеален!
78 Ненавижу 1С
 
04.12.20
12:30
(76) не могу запретить
79 MWWRuza
 
04.12.20
12:37
Иногда, при написании чего-то "через чур замороченного", бывало, использовал(например, была задача, не учетная, по спорту, "очень хитрая" жеребьевка), в процессе написания алгоритма, проще и быстрее было так сделать, но, потом, когда все относительно правильно заработало - "причесал код", и по убирал все безусловные переходы.

почти никогда, но пару раз было
80 Доктор Манхэттен
 
04.12.20
17:41
(0) Стараюсь не использовать никакие операторы изменения хода программы. Ни GoTо, ни Прервать, Продолжить и Возврат.
Условия тоже стараюсь не использовать если это функция, а не процедура. Переменные тоже лучше избегать, а использовать только константы, то есть переменные, которые инициализированы только один раз в месте, где они были объявлены.
81 Доктор Манхэттен
 
04.12.20
17:45
Голосую

нет! Код должен быть идеален!
82 rphosts
 
04.12.20
18:00
Когда-то на васике... ну и на асме но там не гото а джамп!

почти никогда, но пару раз было
83 Конструктор1С
 
04.12.20
18:01
(0) как только в программировании появились методы (процедуры/функции по 1сному), гото автоматом изжил себя

нет! Код должен быть идеален!
84 ShAV
 
04.12.20
18:16
Когда-то очень давно прочитал где-то убедительные доводы, что переходы в коде это не кошерно. И с тех пор не использовал. Было, правда, использовал в школе на занятиях на Бейсике в 1990 примерно, но это не в счет :)

нет! Код должен быть идеален!
85 ДенисЧ
 
04.12.20
18:33
(84) Ой, ви таки из наших ? ))
86 NorthWind
 
04.12.20
18:50
(0) последние лет 25 как-то не было необходимости.

нет! Код должен быть идеален!
87 Сергиус
 
04.12.20
19:37
Честно говоря, в голову даже не приходят случаи, где он нужен настолько, что нельзя обойтись другим.
88 vde69
 
04.12.20
19:48
я даже на микроконтроллерах на "С" не использую...

нет! Код должен быть идеален!
89 Eeeehhhh
 
04.12.20
21:01
Совсем недавно пришел новый клиент - отгрузка стала. Зашел горе программист не учел нескольких условий и они всплыли в момент пика отгрузки. Варианта было 2 или переписать всю процедуру (долго час - полтора) или для этих условий перескочить на метку дальнейшего исполнения. Решил не тормозить людям отгрузку сделал гото.
Правда потом когда пришли с другой задачей переписал процедуру. Гото грех (88) а на мк стиль программирования )))

да, но только когда никто не видит
90 Злопчинский
 
04.12.20
21:29
Удивлю: у меня есть код. в нем есть гото. и, о блин - он работает кучу лет. и суко, не сломался еще...
;-)

да, но только когда никто не видит
91 Злопчинский
 
04.12.20
21:31
как блин я пролграммировал на ассемблере где конструкция BR 14 - одна из основополагающих...
92 NorthWind
 
04.12.20
21:46
(87) ну на асме, например, вы без джампов обойдетесь вряд ли.
93 Доктор Манхэттен
 
04.12.20
21:48
(92) Если на объектно-ориентированном асме, то никаких джампов не нужно.
94 jbond
 
04.12.20
21:57
В то время, когда в айти банков обсуждаются паттерны разбиения монолитов на микросервисы при котором можно избежать антипаттерт Макросервис, а в соседнем ртделе обсуждают дропинг саппорта Кубером Докера, 1Сники обсуждают использование оператора  бейсика goto, который в последний раз использовался в 1993 году
95 youalex
 
04.12.20
22:01
Последний раз использовал на бейсике Спектрума.
И да, GOTO это как реквизит комментарий.
реквизит комментарий часто говорит о том, что в объекте реально недостает какого-то реквизита.
GOTO  - сигнализирует о том, что пора разобрать свое любимое спагетти на аккуратные функции.
96 youalex
 
04.12.20
22:01
Собственно, вот:

нет! Код должен быть идеален!
97 dmpl
 
04.12.20
22:07
(0) Только вот честно - уже и не помню, когда в последний раз была ситуация, когда эта конструкция могла бы потребоваться на ЯВУ. А так - был бы смысл - использовал бы. Как, например, в Ассемблере.

да! Свободно и без ограничений
98 Доктор Манхэттен
 
04.12.20
22:10
(94) Прикинулся как будто знаешь много умных слов, но тут многие понимают эти слова, так что ты лоханулся.
99 dmpl
 
04.12.20
22:14
(41) Прервать, Продолжить и Возврат, все же,  не позволяют "заскочить" в произвольное место в том же вложенном цикле, что GOTO позволяет.
100 dmpl
 
04.12.20
22:18
(44) С помощью GOTO ты можешь вернуть управление на 10 строчек назад, например. И обычно он используется как раз тогда, когда другими конструкциями не получается передать управление в нужное место. Именно поэтому GOTO и не рекомендуется, что для тех случаев, когда его использование было бы оправдано, уже есть отдельные конструкции.
101 Доктор Манхэттен
 
04.12.20
22:19
(41) >>  "Прервать, Продолжить и Возврат" которые суть тоже самое и которые вы по-любому пользуете

Я не использую
102 mishaPH
 
модератор
04.12.20
22:20
всегда считал использующих оный в 1с ЛГБТ ативистами

нет! Код должен быть идеален!
103 Доктор Манхэттен
 
04.12.20
22:20
Когда используешь "плохие" операторы, то нужно сперва задуматься, а все-ли правильно ты продумал в программе. Потому что они сигнализируют что что-то не так и нужно переделать по нормальному.
104 dmpl
 
04.12.20
22:26
(57) Выход из глубокого цикла можно осуществить также поменяв значение переменных так, чтобы условия продолжения всех циклов не выполнялись ;) Впрочем, часто это грязные трюки, которые еще хуже GOTO.

(64) А есть еще самомодифицирующийся код. Трюки с GOTO по сравнению с этим вообще детский лепет, поэтому доступно это только гуру.
105 Доктор Манхэттен
 
04.12.20
22:29
(104) Если из цикла требуется выход, значит цикл применили не по назначению.
106 dmpl
 
04.12.20
22:31
(71) В 1С вообще кастрированный GOTO. Классический GOTO позволял перейти вообще в любое место, вне зависимости от того, какая это процедура или функция.
107 Сияющий Асинхраль
 
05.12.20
00:49
Когда только-только начинал програмить, писал как потом оказалось практически полностью по типу ассемблера, то бишь практически все было только на метках - циклы, переходы, и т.д. Но поскольку уже тогда знал, что использование меток является дурным тоном, то как-то попытался переработать уже написанный код на код без меток, на удивление получилось достаточно быстро. С тех пор всегда писал без меток, и не то чтобы я против них имею какое-то предубеждение, нет, просто за более чем 15 лет метки ни разу так и не понадобились. Хотя в чужом коде изредка встречаются...
108 Ненавижу 1С
 
05.12.20
16:33
(106) надо больше хардкора!
109 CepeLLlka
 
naïve
05.12.20
16:36
Ни разу не использовал..
110 Провинциальный 1сник
 
05.12.20
16:54
Последний раз в школе, когда программировал на вильнюс-бейсике.
Никогда не возникало такой задачи, когда приходилось бы использовать гото.

почти никогда, но пару раз было
111 Провинциальный 1сник
 
05.12.20
16:56
(94) "антипаттерт Макросервис, а в соседнем ртделе обсуждают дропинг саппорта Кубером Докера"
Кто все эти люди?
112 obs191
 
05.12.20
16:58
Сегодня согрешил. А так - очень редко.

почти никогда, но пару раз было
113 Klesk
 
05.12.20
18:57
никогда, у меня и без этого говнокода хватает

нет! Код должен быть идеален!
114 pavig
 
05.12.20
19:01
(0) Ни разу не использовал и даже не понимаю для чего оно нужно. Как-то всегда обходился без этого вот. Да и вроде не видал никогда чтобы кто-то что-то подобное делал.

нет! Код должен быть идеален!
115 pavig
 
05.12.20
19:04
(94)
+100500 прямо в точку!
116 NcSteel
 
05.12.20
21:36
Постоянно использую Возврат, Прервать или Продолжить.

да! Свободно и без ограничений
117 novichok79
 
naïve
05.12.20
22:09
когда писал первое что-то в 1С использовал.
продолжить, прервать и возврат полностью покрывают потребности.

почти никогда, но пару раз было
118 patapum
 
05.12.20
23:47
И метки ни одной в коде за свою жизнь не видел...

нет! Код должен быть идеален!
119 Доктор Манхэттен
 
06.12.20
04:09
(116) Ну и зря. Это говнокод, или антипаттерн по современному.
120 Конструктор1С
 
06.12.20
05:05
(119) нужно уметь писать код без Возврат, Прервать и Продолжить. Многие не умеют. Пытаются, но получаются уродства с огромной вложенностью условных операторов if. А это усложняет восприятие кода не хуже goto
121 ДенисЧ
 
06.12.20
05:13
(120) Напиши _функцию_ без возврат ))
122 Конструктор1С
 
06.12.20
05:37
(121) функцию без возврата не напишешь, а вот процедуру легко. Но и в функциях часто творится уродство с возвратами. Например, их может быть много, и половина из них запрятана в недрах логических ветвлений
123 Гобсек
 
06.12.20
07:11
Последний раз использовал лет 20 назад

нет! Код должен быть идеален!
124 Провинциальный 1сник
 
06.12.20
07:42
(120) (121) Если Прервать или Продолжить улучшает читаемость и понятность кода - то пофиг на "антипаттерны".
125 Провинциальный 1сник
 
06.12.20
07:43
(124) А рассуждать о функциональном программировании в контексте 1с просто смешно. Это чисто процедурный язык. А функция - это процедура с возвращаемым значением.
126 xXeNoNx
 
06.12.20
10:35
Вот вы все и попались, адепты готу.
127 ДенисЧ
 
06.12.20
10:36
(126) Не, тут в основном дартаньяны отмечаются...
128 dmpl
 
06.12.20
11:32
(119) Говнокод - это когда на процессоре в сотни раз быстрее программа выполняется медленнее чем в 90-х годах прошлого века.
129 jbond
 
06.12.20
11:52
(127)  эта ветка - очедное доказательство того, что 1Сники - это не программисты.
130 Провинциальный 1сник
 
06.12.20
18:59
(129) Программирование в работе 1сника необходимая часть, но работа 1сника это не только программирование. Разумеется, что 1сник может не быть в курсе всех новинок в технологии программирования с непонятными иностранными названиями. Просто они за пределами его предметной области. Это как инженер-строитель может быть не в курсе всех новинок в области гидропривода - хотя и пользуется этими технологиями.
131 sitex
 
06.12.20
19:04
(0) Использую и не стесняюсь.

да! Свободно и без ограничений
132 Mikeware
 
06.12.20
20:13
(121) в каком-то из языков (или из диалектов) возвращаемым значением функции являлась автоматически создаваемая переменная с именем, совпадающим с именем функции. И в каком-то - переменная с именем вроде "результат".
Так что не надо недооценивать возможные извращения и извращенцев.
133 jbond
 
06.12.20
20:15
(130) если подс..летние специалисты с довольно большими зарплатами и высоким самомнением и ощущением свое избранности и уникальности ведут обсуждение уровня современных учеников 7..8 класса...
134 Mikeware
 
06.12.20
20:16
а по теме - не пользуюсь, ибо нужды не возникает, и давно.
в принципе, даже на ассемблерах можно писать "без гоуту", в том смысле, что обходиться без прыжков из/в  структуры управления.
135 Гений 1С
 
06.12.20
20:35
Обычно для выхода к концу процедуры/функции, если просто возврат сделать нельзя.
Больше случаев не припомню.

да! Свободно и без ограничений
136 Провинциальный 1сник
 
06.12.20
20:38
(132)"возвращаемым значением функции являлась автоматически создаваемая переменная с именем, совпадающим с именем функции"
Так в Паскале же. Изначально так было. Я это ещё застал, на СМ-4.
Потом в борланде добавили возможность использовать result.
137 Гений 1С
 
06.12.20
20:42
(128) в 90х годах эта программа просто не скомпилировалась бы, там объемы ОЗУ были маленькие. У тебя бы номенклатура средней базы 1С туда бы не влезла, не говоря уже про доки и регистры. не ной.
138 Провинциальный 1сник
 
06.12.20
21:05
(137) В 90-х писали так, что в принципе было пофиг на объем памяти. Программа на фокспро работала даже на 640 килобайтах. С любым объемом данных (с учетом ограничения на dbf).
139 Еврейчик
 
06.12.20
21:21
ни разу не приходилось. даже в Институте. Запрещено законом.


Если хотите goto то пишите на ассемблере.
140 Еврейчик
 
06.12.20
21:22
(95)ну бейски без goto же не бейсик... только в ней можно использовать goto законным образом. Без зашквара. Хотя использование бейсика это тот еще зашквар.
141 Гений 1С
 
06.12.20
21:33
(140) Вопрос об законности использовании Goto возникает только у тех, кто в универе прогуливал структурное программирование. Там наглядно объяснено когда можно, когда нельзя. Курим Дейкстру
142 Ненавижу 1С
 
06.12.20
22:02
(141) раскрой тему, раз уж начал
143 Гений 1С
 
06.12.20
22:50
(142) прости, это долго, а значит платно
144 jbond
 
06.12.20
23:00
(142) лоол. Тема гуглится за минуту:

По теореме Бёма — Якопини Goto не нужен там, где есть поодержка конструкций цикла Пока, следования и условия.
145 Гений 1С
 
06.12.20
23:15
(144) то бишь нигде не нужен. ;-)
146 Cthulhu
 
06.12.20
23:16
херасе (145) для тебя "долго а значит платно"
147 Гений 1С
 
06.12.20
23:17
(146) у нас с Ненавижном свои приколы. ;-)
ну на самом деле GOTO становится злом только в коде в виде лапши, т.е. с непонятными переходами.
Если это переход в конец процедуры, то норм.
148 Cthulhu
 
06.12.20
23:20
(147): знаю только один случай, в котором прямой переход по метке может быть нужен (по совокупности факторов!). это когда непростую рекурсию с меньшими ресурсозатратами надо эмулировать (а сама рекрсия нужна немалое число раз - что значит многократное размножение копий контекстов)
149 Ненавижу 1С
 
06.12.20
23:34
(147) а нах в конец процедуры переходить если есть возврат
Какая-то непоследовательность
150 Злопчинский
 
07.12.20
00:16
(149) ну, например, по (перед) возврату надо сделать некую киолд еще... да, можно сделать отдельную процедуру/функцию и вызывает ее в двух местах...
151 Cthulhu
 
07.12.20
00:23
(149): возврат из одной точки в конце - правило хорошего тона а также упрощает сопровождение (не говоря уж об уменьшении гимора для полследователей). ну чтобы кто-нибудь всовывая код в конце процедуры, который должен сработать в дополнение к тому как оно работает (и не ковыряясь во всем остальном) - не удивлялся тому, что оно не срабатывает...
152 Гений 1С
 
07.12.20
01:44
(151) вот, видно что не мальчик, но муж. ;-)
153 Dionis Sergeevich
 
07.12.20
02:39
Вообще не приходилось. И даже не задумывался. Ни в 1с, ни в джаве. Только условные переходы  по смещению в асме, лет 17 назад

нет! Код должен быть идеален!
154 MadHead
 
07.12.20
02:42
Когда-то давно было. Сейчас потребности такой не возникает

почти никогда, но пару раз было
155 Доктор Манхэттен
 
07.12.20
06:31
(120) Хоть один одинесник в теме, и то хорошо.
Мои принципы программирования таковы:
1. Никаких условных операторов внутри функций. (Не использовать if)
2. Никаких циклов со счетчиком или с выходом из цикла по условию, и прочие. (никаких for)
3. Возврат из функции только один и в самом конце.
4. Не переопределять переменные. Каждая переменная может быть инициализирована только один раз в момент ее определения. (никаких var, только const)


Если какой-то из пунктов нарушается, ищу что у меня в программе не правильно спроектировано, и почти в 100% случаев нахожу и исправляю.

нет! Код должен быть идеален!
156 Доктор Манхэттен
 
07.12.20
06:31
(121) Скорее всего чел имел в виду что не должно быть возврата внутри цикла.
157 Доктор Манхэттен
 
07.12.20
06:33
(124) Прервать или Продолжить не могут улучшить читаемость, но могут только запутать, усложнить отладку и тестирование.
158 Провинциальный 1сник
 
07.12.20
06:51
(157)
Вот такой паттерн c "продолжить" отлаживать намного проще, чем если все фильтры запихать в одну длинную строку Если с условиями по И. Особенно если фильтры сами по себе сложные.

---
Для Каждого .. из ... цикл
  // накладываем фильтры
  Если <фильтр 1> Тогда
    Продолжить;
  КонецЕсли
  ...
  Если <фильтр N> Тогда
    Продолжить;
  КонецЕсли

  <делаем что-то полезное>
КонецЦикла;
159 Доктор Манхэттен
 
07.12.20
07:29
(158) Вовсе не проще. Куча условий, трудно читать. Это же говнокод ты только что написал. За такое у нас сразу по рукам канделябрами. Этот код не пройдет Код-ревью и не будет пропущен в продакшн пока не исправишь как надо.
160 Paint_NET
 
07.12.20
07:31
(159) Дык показал бы сразу, как надо.
161 Доктор Манхэттен
 
07.12.20
07:32
(160) Вот так надо:

ОтфильтрованныйМассив1 = Фильтр1(ИсходныйМассив);
...
ОтфильтрованныйМассивN = ФильтрN(ОтфильтрованныйМассивN-1);

Для Каждого .. из ОтфильтрованныйМассивN цикл
  <делаем что-то полезное>
КонецЦикла;
162 Bigbro
 
naïve
07.12.20
07:35
Доктора разработчики ЗУП покусали.

да! Свободно и без ограничений
163 ДенисЧ
 
07.12.20
07:37
(161) Ты канделябр-то вытащи из "подсвечника"
164 Bigbro
 
naïve
07.12.20
07:38
за 161 я бы кстати руки ломал.
158 лучше.
165 Доктор Манхэттен
 
07.12.20
07:39
(164) Хорошо что тебя не допустят к решению что лучше в серьезных проектах.
166 Bigbro
 
naïve
07.12.20
07:40
(165) допускали и неоднократно. и не сожалели ни разу. в отличие от тебя очевидно.
167 Доктор Манхэттен
 
07.12.20
07:41
Могу объяснить чем (158) хуже:
1. Используются операторы изменения хода программы "Если Тогда"
2. Используются операторы изменения хода программы "Продолжить"
3. Выглядит грязно
168 Доктор Манхэттен
 
07.12.20
07:42
(166) Пустые слова.
169 Bigbro
 
naïve
07.12.20
07:43
(168) слова балаболки, даже не понимающего потенциальных проблем использования (161).
170 Mikeware
 
07.12.20
07:46
(136) На СМ-4 (под RSX-11) мы так компилятор паскаля и не запустили. На СМ-1800 и корветах - гоняли, но не в реальных задачах.
а в дельфях вроде уже Result был...
171 Доктор Манхэттен
 
07.12.20
07:46
(169) И снова пустые слова.
172 Paint_NET
 
07.12.20
07:50
В (161) утяжеление кода бессмысленное, если фильтры простыми условиями задаются. И это, отдельная процедура на каждый фильтр? Серьёзно? Создай одну процедуру и передавай туда структуру отбора с исходными данными, если уж на то пошло. А вот это Фильтр1(...), Фильтр2(...) - дичь полная.
173 dmpl
 
07.12.20
07:51
(137) Расскажи это клюшечникам ;)

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

(155) После этого неудивительно что программы такие тормозные и прожорливые до памяти...
174 Paint_NET
 
07.12.20
07:51
Эпичненько у тебя получилось лютым говнокодом на просто некрасивый код ответить, бгг :)
175 ДенисЧ
 
07.12.20
07:54
(170) На ДВК2 (rt11sj) у меня паскакаль работал. А вот си мне так и не нашли ((
176 Доктор Манхэттен
 
07.12.20
07:58
(172) Фильтр1(...) - это я условно описал часть программы, которая выполняет фильтрацию. Если не любишь создавать функции, можешь прямо по тексту выполнить фильтрацию с присвоением результата в новую переменную. Но я бы порекомендовал вынести в функцию любую операцию, имеющую определенный смысл, для улучшения качества кода.
На счет утяжеления - это ничтожно и практически не влияет на быстродействие. То же условие Если Тогда интерпретатор выполнит используя 100500 вызовов функций. Переделав его в вызов своей функции, ты возможно добавишь на незначительное количество вызовов больше, а может наоборот убавишь на некоторое количество, это вообще не важно. Процессорное время стоит во много раз дешевле чем время программиста. Программу нужно писать в первую очередь для человека, который ее будет читать впоследствии, и только во вторую очередь для машины.
177 Провинциальный 1сник
 
07.12.20
07:58
(175) Си тоже был на нашей кафедральной СМ-4. Вообще прикольно там было. Знакогенератор был специфический, 7-битный, где маленькие латинские плюс некоторые спецсимволы были заменены на большие русские. В результате вместо фигурных скобок в Си-программах ставили Ш и Щ. Хорошо недолго этим занимались, быстро перешли на борланд на писишках.
178 dmpl
 
07.12.20
07:58
(162) Кстати, про внедрение ЗУП на Автовазе. Там самописная программа считала свыше 100 тыс. сотрудников за несколько часов на древнем оборудовании. Когда стали внедрять ЗУП, остановили расчет через 3 суток, хотя и сотрудников уже было в разы меньше, и оборудование для ЗУП гораздо более шустрое.

(167) А теперь покажи что у тебя в функциях Фильтр1...ФильтрN.
179 dmpl
 
07.12.20
08:00
(176) Слова человека, который никогда не разрабатывал высоконагруженных систем.
180 Доктор Манхэттен
 
07.12.20
08:00
(174) Не тот код ты называешь говнокодом, дружище. Ох как ошибаешься
181 Доктор Манхэттен
 
07.12.20
08:05
(179) Все зависит от условий. Паттерн стандартный:

функция Фильтр1 (входящийМассив) {
    возврат входящийМассив.фильтр(элементМассива => условие(элементМассива));
}
182 Paint_NET
 
07.12.20
08:06
(180) Ты же понимаешь, что создание функций Фильтр1(), Фильтр2(), ФильтрN() - это именно говнокод, в самом эпичном его проявлении - дублировании кода?

Если идти по твоей схеме, то создавать надо одну функци. Фильтр(ПараметрыОтбора, МассивДанных), без дублирования кода в множестве функций.
183 Провинциальный 1сник
 
07.12.20
08:06
Есть два правильных подхода к паттернам разработки.
Первый - писать так, чтобы в коде было легко разобраться тебе через N лет или чужому человеку.
Второй - писать так, чтобы код выполнялся с минимальными затратами ресурсов вычтехники.

И третий - неправильный. Писать так, чтобы выполнять некие навязанные свыше условия, даже если они тормозные и непонятные.
184 Доктор Манхэттен
 
07.12.20
08:06
(179) Сразу видно что ты не в курсе что я разрабатывал.
185 Paint_NET
 
07.12.20
08:08
(184) Ну опять же, мог бы и написать, если есть публичные проекты, к чему эта токсичность? Иначе получается "я прав, патамушта я прав".
186 ДенисЧ
 
07.12.20
08:08
(183) Код писать нужно так, как будто его читать будет параноик с манией убийства, который знает твой домашний адрес
187 Доктор Манхэттен
 
07.12.20
08:11
(182) Если код в функциях действительно будет дублироваться, то есть смысл его вынести в одну общую функцию. Но мы не знаем какие там условия, на сколько они сложные, и на сколько задублированный получится код. Поэтому твои слова - просто выдумка, основанная на предположении что код будет задублирован.

Собрать все функции по фильтрации в одну функцию - это правильно, я только за, при условии что эта функция будет выполнять одну общую задачу, состоящую из нескольких напрямую связанных по логике, а не множество разных несвязанных между собой.
188 Доктор Манхэттен
 
07.12.20
08:14
(185) "я прав, патамушта я прав" - это вполне достаточный ответ на заявление "ты неправ потому что ты не прав". Раз оппонент не привел ни одного аргумента, то он недостоин получить аргументированный ответ.
189 Mikeware
 
07.12.20
08:14
(183) "Помните: программы читаются людьми."© Д.ВанТассел
как правило, оптимизирующие компиляторы (это если не касаться 1с) хорошо сглаживают "перекос в сторону читаемости"
190 Paint_NET
 
07.12.20
08:15
(187) Так, теперь ты и в мою сторону начинаешь ядом плеваться, ыксперд?
Это не выдумка, т.к. исходный код, который ты назвал говнокодом, основывается на простых условиях, которые не надо раскидывать по различным функциям фильтров, как ты это реализовал.
191 Доктор Манхэттен
 
07.12.20
08:18
(190) Переходишь на личности? Тут спор можно было бы и закончить. Но я объясню: избавившись от условий, я очистил код, превратив его из говнокода в нормальный, легко читаемый, легко отлаживаемый, легко тестируемый.
192 Paint_NET
 
07.12.20
08:22
(191) Нет, ты создал из просто некрасивого кода говнокод, сделав N функций с дублирующимся кодом вместо N простых условий. Почему - я выше аргументировал, но ты не сумел опровергнуть мою аргументацию. Начал на ходу придумывать "не знаем, какие там условия, насколько они сложные", т.к. не понимаешь, что нет настолько сложных условий между Если... Когда, которые нельзя унифицировать и передать структурой в универсальную функцию фильтра.
193 Галахад
 
07.12.20
08:28
Коли уж пошла такая пьянка, приведите пример конфигурации, на 1С разумеется, от и до написанную прекрасным слогом.
194 Paint_NET
 
07.12.20
08:30
(193) *всхохотнув*
ЗУП xD

А вообще, из типовых наиболее приближенна к хорошему коду, имхо, Бухгалтерия.
195 Галахад
 
07.12.20
08:32
(194) Желательно не от вендора. Судя по этой теме должны же быть еще более прекрасно написанные программы.
196 Paint_NET
 
07.12.20
08:35
(195) Увы, среди нетленок красивый код - это редкое исключение. На некоторые поделия Раруса без слёз не взглянешь.
197 Провинциальный 1сник
 
07.12.20
08:37
(196) Красивый код пишут только ради искусства. Когда "джентельмен развлекается". А не по команде сверху или для зарабатывания денег.
198 Paint_NET
 
07.12.20
08:38
(197) Ну, можно хотя бы стараться в этом направлении.
Неудобоваримые и плохо поддерживаемые портянки не так уж сложно писать более структурированно и аккуратно, без существенных потерь в скорости.
199 dmpl
 
07.12.20
08:48
(184) Если бы ты действительно разрабатывал что-то высоконагруженное, то знал бы, что месяц работы программиста - 5000-10000$, а экономия на оборудовании за счет оптимизации, выполненной за этот месяц - сотни тысяч $. Процессорное время не бесплатное и далеко не бесконечное, если программист считает его бесплатным и бесконечным - он плохой программист. Некоторые системы в принципе не заработают при недостаточном уровне производительности из-за блокировок от медленно исполняющегося кода.
200 dmrjan
 
07.12.20
08:53
Использование циклов - зло для SQL-баз. Ограничение стоимости запроса приходится отключать из-за таких программистов.

нет! Код должен быть идеален!
201 Bigbro
 
naïve
07.12.20
08:56
(171) зачем тебе что-то говорить если ты не можешь адекватно воспринять то что тебе Паинт_нет и дмпл пишут по существу.
202 ДенисЧ
 
07.12.20
08:56
(200) Как связаны циклы в коде и SQL?
203 Bigbro
 
naïve
07.12.20
09:07
ну и по поводу (161) помимо высказанного уже коллегами
представьте себе ситуацию когда у вас в массиве немало элементов, пусть сотня миллионов
и еще полсотни условий.
некрасивый код с Если и Продолжить спокойно проедет их все и отработает.
а вот при копировании этого массива 100 500 раз копрокод из (161) создаст головной боли.
204 dmrjan
 
07.12.20
09:16
(202) Тем что некоторые программисты делают вложенные запросы в цикле, тем самым при больших таблицах происходит недопустимое потребление ресурсов. PostgreSQL начинает каждый раз создавать временную таблицу на чтение, mssql ругается на применение ограничения стоимости запроса. Программисты 1с требуют покупки нового сервера с быстрым массивом.
205 ДенисЧ
 
07.12.20
09:17
(204) Так и говори, что про вложенные запросы. Что они зло - это и без тебя все знают.
206 Paint_NET
 
07.12.20
09:17
(204) Запросы с циклами - это отдельная дисциплина специальной олимпиады.
Впрочем, тут уже была ветка, в которой демонстрировались некоторые исключительные случаи, когда без этого никак.
207 ДенисЧ
 
07.12.20
09:17
(204) "Программисты 1с требуют покупки нового сервера с быстрым массивом."
А это вариант... Ну, чтобы дев-среду обновили )))
208 Paint_NET
 
07.12.20
09:18
+(206) Т.е. "запросы в циклах".
209 Конструктор1С
 
07.12.20
11:50
(161) никакого улучшения читабельности не увидел
210 Bigbro
 
naïve
07.12.20
11:53
(209) если бы там было что-то вроде:
  Массив = Отфильтровать(Массив);
я бы не стал особо спорить.
211 Конструктор1С
 
07.12.20
12:06
(210) это да. Но (161) в плане читабельности ну ничуть не лучше (158), а то и хуже
212 Ботаник Гарден Меран
 
07.12.20
13:12
Забавно смешаны термины.
Код может не использовать Goto и быть противоположностью идеала.
Отказ от goto был связан со структурированием кода, чтобы не размазывать смысл алгоритма.
А сейчас смысл прекрасно размазывается по модулям БСП, но опросов про неидеальность БСП никто не создает.
Просто взяли черный ящик, а алгоритмы основной задачи кувалдой приспособили к БСП приспособили.
Еще великолепную лапшу асинхронности в платформе можно рассмотреть.
P.S.
Да,да, пункт в правилах помним.
Платформа - великолепна. Вжик, вжик, и задача готова.

да! Свободно и без ограничений
213 ДенисЧ
 
07.12.20
13:13
(212) "опросов про неидеальность БСП никто не создает"

А зачем опрашивать про очевидное?
214 Конструктор1С
 
07.12.20
13:24
(212) справедливости ради, БСП нужно рассматривать как фреймворк, а не как часть прикладного кода. Ты же не вникаешь во внутреннюю работу "SELECT ... FROM ...", просто пишешь запрос и работаешь с результатом запроса. Вот и с БСП надо так же - дёрнул нужный API, получит ответ и пошел дальше, не вникая во внутренности БСП
215 tan76
 
07.12.20
13:25
нет, и не вижу необходимости

нет! Код должен быть идеален!
216 Провинциальный 1сник
 
07.12.20
14:58
(214) А завтра БСП поменяется, и всё тобой написанное с использованием БСП работать перестает, потому что процедуру перекинули в другой модуль. И это не сказать чтобы очень редко происходит.
217 fisher
 
07.12.20
15:30
(216) Заюзал как-то в обработочке буквально несколько функций. Причем функции исключительно из публичного API подсистемы "Общая функциональность" в БСП. Фактически с каждым выходом новой БСП что-то ломалось. Зарекся. И не я один такой. Встречал на просторах целые методики по инкапсуляции нужной функциональности БСП, чтобы избежать этих граблей.
Вот такой вот фреймворк. Без обратной совместимости. С другой стороны, если рассматривать его просто как часть одного семейства типовых, то в плюсах то, что легаси не накапливается. Кроят его смело. И ту эволюцию, что я наблюдал - в целом одобряю.
218 Провинциальный 1сник
 
07.12.20
15:35
(217) Так да. БСП это не инструментарий для доработки конфигураций. Это фреймворк для разработки типовых, и ничего больше. Он облегчает работу фирме 1с, но не нам. Наоборот, за легким доступом куда надо через БСП кроется на порядок более сложное обращение к данным напрямую.
219 Cthulhu
 
07.12.20
17:31
(173): чо???
220 Доктор Манхэттен
 
07.12.20
17:39
(192)
1. Где ты там увидел дублируюшийся код? Твои фантазии не считаются. Реальные аргументы есть?
2. То что ты называешь говнокодом, в действительности является правильным кодом. У тебя понятия искаженные.
3. Ты переводишь внимание на второстепенные детали, упуская самое важное. Еще раз повторяю: мои функции - это условность. Вместо них может быть любой код, выполняющий фильтрацию. То что ты хочешь его написать внутри текущей функции - это уже твои проблемы. Суть исправления вовсе не в создании самих функций, а в выносе логики фильтрации из тела цикла.
4. То что там простое условие - это только твое выдуманное пожелание. Автор вопроса утверждал обратное - что условия могут быть сложные.
Допускаю что там может быть все что угодно, вплоть до извлечения дополнительных данных из базы.
5. Твоя нелюбовь к упорядочиванию кода в виде вынесения логики в отдельные функции говорит о том что ты любишь говнокодить, и твое мнение по качеству кода имеет низкий рейтинг.

нет! Код должен быть идеален!
221 Доктор Манхэттен
 
07.12.20
17:44
(199) >>  Если бы ты действительно разрабатывал что-то высоконагруженное, то знал бы, что месяц работы программиста - 5000-10000$

Ахахаххаха! У вас в конторе по разработке высоконагруженных систем работает всего один единственный программист чтоли? Как называется контора, "хлебный ларек у Ашота"? Ну ты выдумщик, блин, нашел чем меня поразить.
222 Доктор Манхэттен
 
07.12.20
17:53
(203) Выдуманные дополнительные условия. Не засчитывается.
В обоих случаях сложность алгоритма О(n), так что вообще пофиг. Попробуй еще.
Оптимизировать быстродействие нужно только тогда, когда оно на что-то влияет и действительно требуется. Когда будет задача оптимизации, тогда и можно будет рассуждать как переписать для ускорения выполнения. Пока что мы обсуждаем как написать более красиво.
Трата времени программиста должна быть экономически оправдана, а не просто "Вдруг мой массив дней в неделе когда-нибудь вырастет до сотни миллионов, надо заранее заговнокодить чтобы навечно это тут осталось"
223 Доктор Манхэттен
 
07.12.20
17:57
(210) >>   Массив = Отфильтровать(Массив);

Просто вынеси несколько вызовов функций фильтрования в отдельную функцию, и будет то что ты хочешь. Только имя переменной у тебя неправильное, используешь уже занятое, так нельзя делать. Нужно так:

  ОтфильтрованныйМассив = Отфильтровать(Массив);
224 Доктор Манхэттен
 
07.12.20
17:59
(211) А что ты на это скажешь?

ОтфильтрованныйМассив = ПриментьСразуВсеФильтры(ИсходныйМассив);

Для Каждого .. из ОтфильтрованныйМассив цикл
  <делаем что-то полезное>
КонецЦикла;
225 Cthulhu
 
08.12.20
01:14
дружище. ты или соавтором бсп был, или просто им ушиблен неслабо так...
именно что время прона стоит много - а ты своими выносами наружу каждого чиха - именно говнокодишь.
причем, прикольно. что хвалишь себя - гораздо больше собеседников, которых так любишь обвинять в том. что они говорят неправду. это так забавно и лаксусово, спасибо, бро, повеселил, LMAO
226 Bigbro
 
naïve
08.12.20
04:39
(222) можешь дальше продолжать свои фантазии в вакууме плодить.
а я пишу то что знаю. и если я наступал на грабли с выделением памяти в своем кровавом энтерпрайзе, то учитываю это в дальнейшем.
а ты иди дальше корми розовых пони и рассказывай про сложность алгоритма и какой ты великий разработчик высоконагруженных систем.
хотя уже достаточно очевидно что твои понты пшик.
227 Paint_NET
 
08.12.20
05:11
(220) Да-да, у всех искажённые понятия, выдумки, а вот ты точно знаешь, как надо.
Но пишешь говнокод.
228 Доктор Манхэттен
 
08.12.20
06:31
(225) >> именно что время прона стоит много
Хорошая попытка оправдать говнокод, но мимо. Когда будет поставлена задача сделать хорошо для процессора и плохо для людей, тогда и поговорим. Но пока такой задачи нет, можешь погулять.
229 Доктор Манхэттен
 
08.12.20
06:34
(226) Неоправданная оптимизация - лишение премии и выговор. Я бы именно так с тобой поступал если бы ты у меня говнокодил. Таких у нас не любят. На первом месте в серьезных проектах стоит быстрота написания, простота отладки, легкость тестирования. Ты бы запорол сроки полюбому, не справился с поставленой задачей.
230 Paint_NET
 
08.12.20
06:35
Данный товарисч очень напоминает самомнением Пашо.
231 Доктор Манхэттен
 
08.12.20
06:35
(227) Ты пока ничего не написал лучше. Приведи свой пример, как правильно писать, поржем.
232 Paint_NET
 
08.12.20
06:36
(231) Я тебе уже привёл пример. А ты пишешь говнокод :)
233 Доктор Манхэттен
 
08.12.20
06:38
(232)  Провинциальный 1сник мне привел пример своего говнокода. А ты даже так не смог.
234 Доктор Манхэттен
 
08.12.20
06:39
(230) Второй переход на личности при отсутствии реальных аргументов. Так и быть, на этот раз засчитаю тебе слив.
235 Paint_NET
 
08.12.20
06:40
(233) Разуй зенки и перейди на страницу назад. Я привёл пример, как твой говнокод нужно переписать.
236 Paint_NET
 
08.12.20
06:40
(234) Да плыви уже, ихтиандр :) ЧСВ только своё не забудь.
237 Bigbro
 
naïve
08.12.20
06:43
(229) для начала - я не работаю у руководителей которых не уважаю, ты из этой категории. в нее ты попадаешь по своему ничем не обоснованному апломбу, некомпетентности и неумению признавать свои ошибки. это даже не учитывая неумение общаться с людьми, находить общий язык и доносить свои мысли - это необходимые черты для руководителя, так что твои мечты о руководстве на проекте останутся мечтами. потому что если они реализуются - ты прилюдно обосрешься и запорешь дело.

ну и по поводу оптимизации - ее нет в моем коде. я просто решаю задачу наиболее очевидным, простым и не затратным способом. а ваша попытка притянуть за уши "стандарты" - ведет к расходу памяти, ухудшению читаемости, сложностям в отладке. в критичной ситуации с производительностью мой код отработает а ваш сдохнет на наложениях фильтров из за нехватки памяти даже не дойдя до самого цикла, в котором "делается что-то полезное".

на этом дискуссию заканчиваю, без надежды, что до вас дойдет хоть что-то из сказанного.
238 Провинциальный 1сник
 
08.12.20
06:47
(233) Мой как вы выразились "говнокод" понятен при первом же взгляде. Любой специалист при необходимости добавить например новый фильтр или исправить существующий сможет это сделать за минуту. А в вашем нужно полтора часа только разбираться. Действительно, похоже на ЗУП, где ради одной цифры происходит заполнение десяти временных таблиц и обработка тысяч строк данных.
239 Доктор Манхэттен
 
08.12.20
08:37
(235) А, ты имеешь в виду этот твой комментарий про дублирование кода в этом месте:

Фильтр1
Фильтр2
...

Типа буквы "Ф", "и", "л", "ь", "т", и "р" у меня несколько раз повторились. Ну что ж, признаю свою ошибку, ты действительно предложил свой вариант. Но это просто зашквар, даже комментировать не хочу, и так понятно что ты не в теме.
240 Волшебник
 
08.12.20
08:39
(155)
>> Мои принципы программирования таковы: 1. Не использовать if    2. никаких for

Вы точно умеете программировать?
241 Доктор Манхэттен
 
08.12.20
08:39
(237) Хамишь, так же как Paint_NET, при этом не предложив ничего лучше чем мой вариант. Так любой дурак может. А ты попробуй написать более красиво и по стандартам. Посмотрим. Пример кода от Bigbro в студию!
242 Bigbro
 
naïve
08.12.20
08:45
см (164)
243 Paint_NET
 
08.12.20
08:46
(239) То есть ты даже не понял комментарий? Да ты тупее, чем кажешься :)
244 Конструктор1С
 
08.12.20
09:08
(224) вот уже получше. Только со своими принципами "ни кой раз не прервать!" ты всё равно внутри этого метода выполнишь всё тот же фин ушами

ОтфильтрованныйМассив1 = Фильтр1(ИсходныйМассив);
...
ОтфильтрованныйМассивN = ФильтрN(ОтфильтрованныйМассивN-1);

только вместо фильтр() создашь несколько массивов один из другого
245 Bigbro
 
naïve
08.12.20
09:56
мне даже любопытно стало как он ветвления реализует без if
246 Провинциальный 1сник
 
08.12.20
09:59
(245) Можно например генерировать перехватываемое исключение по условию и это будет ветвление без Если)
247 Bigbro
 
naïve
08.12.20
10:08
угу, подменять указатель стека и использовать возврат.
даешь больше "стандартов"! ))
248 Cthulhu
 
08.12.20
13:10
(228): твое проецирование (тут это слово - термин из психологии/психиатрии) - это так мило и забавно.
сначала ты воешь про свой якобы "правильный" стиль программирования аргументируя свой говнокодинг уменьшением проблем и экономией времени при дальнейшем сопровождении. а когда тебе на пальцах показывают, что твой говнокодинг ведет к утяжелению дальнейшего сопровождения и увеличению трудозатрат на него (при том давая реальный пример из жизни) - ты начинаешь ныть в другую сторону, при том обвиняя собеседника в том, чем сам грешишь. и тут же так мило перескакиваешь на другую тему.
спасибо, дружище, мне как людоведу и душелюбу было познавательно наблюдать подобный экземпляр - хотя в дальнейшем, пожалуй, было бы скучновато... так что - это ты гуляешь мимо, продолжая лелеять свой комплекс неполноценности, демонстрируя себе самому какой ты виконт де-бражелон, lol.
удачи.
249 dmpl
 
08.12.20
14:51
(221) Хм... с чего ты взял, что программист один?

(222) Если все программисты пишут не оглядываясь на производительность - в итоге оптимизировать там нечего, ибо проще переписать, чем оптимизировать. Так что твой идеальный пример подходит только для мест, где производительность не важна. А где она важна - уже приходится искать компромис между идеальным кодом и скоростью работы еще на этапе разработки. Впрочем, это джунам обычно не показывают, их дрючат идеальным кодом и сроками :)
250 Злопчинский
 
08.12.20
14:53
руки прочь от готу!
251 dmpl
 
08.12.20
14:53
(229) Ну и каким образом повышается быстрота написания и легкость отладки при вынесении любого чиха в отдельную функцию?
252 Доктор Манхэттен
 
08.12.20
17:33
(242) Там просто пустые слова, ничего полезного ты не предоставил.
253 Доктор Манхэттен
 
08.12.20
17:34
(243) Теперь ты уже не оправдаешься. Лоханулся, но не признаешь свою ошибку, даже когда я тебя в нее прилюдно ткнул носом.
254 Доктор Манхэттен
 
08.12.20
17:35
(244) Не могу сказать как конкретно я реализую эту часть кода, пока не будет известно точное описание задачи. Ты тем более не можешь знать как я сделаю, поэтому даже не пытайся выдавать свои выдумки за мои действия
255 Доктор Манхэттен
 
08.12.20
17:37
(245) Так же как и мне любопытно как ты реализуешь переход к метке без GOTO. Намек понял?
256 Доктор Манхэттен
 
08.12.20
17:38
(246) Применять исключения не по назначению - говнокод
257 Доктор Манхэттен
 
08.12.20
17:38
(247) >> угу, подменять указатель стека и использовать возврат.

Как же ты далек от понимания красивого кода...
258 Доктор Манхэттен
 
08.12.20
17:40
(249) За десятку вряд ли согласится работать более одного программиста, разве что индусов пачку наймете.
259 Доктор Манхэттен
 
08.12.20
17:41
(249) >>  Так что твой идеальный пример подходит только для мест, где производительность не важна.

Ну наконец-то хоть до одного дошло, и то радует
260 Доктор Манхэттен
 
08.12.20
17:56
(251) Абсолютно не верно. Не нужно любой чих выносить в отдельную функцию, это не всегда улучшает понимание и простоту. В функцию нужно выносить только конкретные законченные действия, имеющие понятные человеку определения, с соответствующим названием функции. Тогда будет легко понимать что этот код выполняет и какой результат он возвращает.
Для отладки достаточно проверить входные параметры и выходной результат, чтобы сразу было понятно правильно или нет отработала функция, без необходимости входить внутрь функции отладчиком.
Для модульного тестирования то же самое, достаточно вызвать отдельную функцию из тестового модуля с предопределенными входными параметрами, и проверить соответствие возвращенного результата ожидаемому.
261 fisher
 
08.12.20
18:01
(251) Это дзен. "Не любой чих в отдельную функцию". А код естественным образом приобретает совершенный вид. Тут легкими веществами и короткими сроками не обойтись.
Так заповедал гуру дядюшка Мартин (который Фаулер), который долго курил правильную траву и вообще наше все. И вот он говорил, что ежели функция длиннее шести строк, то такая функция уже "попахивает".
262 Конструктор1С
 
08.12.20
18:20
(254) а там вариантов не много. Цикл по массиву и проверка. Если будет что-то более сложное, то это будет ахтунг. Получится не избавление от продолжить/прервать, а выстрел себе в ногу. Давай сравним два варианта:

без продолжить

Процедура ЧёткаяОбработкаДанныхПоФеншую(ИсходныйМассив)

    ОтфильтрованныйМассив = Новый Массив;
    Для каждого Элемент Из ИсходныйМассив Цикл
        Если ТоЧтоНадо(Элемент) Тогда
            ОтфильтрованныйМассив.Добавить(Элемент);    
        КонецЕсли;    
    КонецЦикла;
    
    Для каждого Элемент Из ОтфильтрованныйМассив Цикл
        
        // Полезный код
        
    КонецЦикла;

КонецПроцедуры

с "запрещенной" продолжить

Процедура ВарварскаяОбработкаДанных(ИсходныйМассив)

    Для каждого Элемент Из ОтфильтрованныйМассив Цикл
        
        Если Не ТоЧтоНадо(Элемент) Тогда
            Продолжить;    
        КонецЕсли;
        
        // Полезный код
        
    КонецЦикла;

КонецПроцедуры

даже если в первой процедуре ты вынесешь фильтрацию в отдельный метод, код не станет читабельнее второй процедуры
263 Конструктор1С
 
08.12.20
18:21
* во второй процедуре в цикле будет обходиться ИсходныйМассив
264 ДенисЧ
 
08.12.20
18:23
(262) А если
Процедура ПолуВарварскаяОбработкаДанных(ИсходныйМассив)

    Для каждого Элемент Из ОтфильтрованныйМассив Цикл
        
        Если ТоЧтоНадо(Элемент) Тогда
        // Полезный код
        КонецЕсли;
        
        
    КонецЦикла;

КонецПроцедуры
265 Провинциальный 1сник
 
08.12.20
18:38
(264) Так красивее безусловно, но отлаживать сложнее будет, придется нырять в ТоЧтоНадо для отладки фильтров.
266 Конструктор1С
 
08.12.20
18:38
(264) вложенностью циклов и условных операторов тоже не стоит злоупотреблять. Это усложняет восприятие кода

Процедура СделатьВсёСразу()

    Для каждого <...> Цикл        
        Если Условие Тогда        
            Если Условие Тогда         
                Для каждого <...> Цикл                
                    Если Условие Тогда                    
                        // Чё та делаем    
                    КонецЕсли;                
                КонецЦикла;
                // Снова чё та делаем
            ИначеЕсли Условие Тогда                
                Для каждого <...> Цикл                
                    Если Условие Тогда                    
                        // ... Лять, где я и зачем тут оказался?                    
                    КонецЕсли;     
                    // Тут запрячем трудновоспроизводимую багулину
                КонецЦикла;    
            КонецЕсли;        
        КонецЕсли;    
    КонецЦикла;

КонецПроцедуры
267 Провинциальный 1сник
 
08.12.20
18:40
(266) Вот, я это и имел в виду. Намного нагляднее цепочка Если с Продолжить, чем огромной вложенности Если.
268 Злопчинский
 
08.12.20
18:42
(266) ненавижу такие этажерки. если такая хрень получается предпочитаю обратными условиями  превращать в линейный код. и ветку иначе делать не внтури если . а после конецЕсли
269 Конструктор1С
 
08.12.20
18:46
(268) а я код насколько можно разлинеиваю, а насколько неможно выношу в отдельные методы
270 fisher
 
08.12.20
18:48
Есть мнение, что Иначе и ИначеЕсли  - это зло. Которого часто можно избежать.
271 Конструктор1С
 
08.12.20
18:57
(270) главное чтобы цепочка еслей была не сильно длинная и не сильно вложенная. Т.е. "Если" и "КонецЕсли" должны быть как можно ближе друг к другу

Процедура ВыбратьПризвание()

    Если НравитсяПисатьКод() Тогда
        ПойтиВПрограммисты();
    ИначеЕсли ЕстьДизайнерскиеНавыки() Тогда
        ПойтиВДизайнеры();
    ИначеЕсли ЕстьВодительскиеПрава() Тогда
        ПойтиВТаксисты();    
    Иначе
        УбитьсяОбСтену();    
    КонецЕсли;

КонецПроцедуры

вот так нормально читается. Но если между началом и концом логического блока будет 100 строк кода, а точек принятия решения останется столько же, то код всё равно станет труднее для восприятия
272 Доктор Манхэттен
 
08.12.20
19:17
(262) Первый вариант вообще некрасивый. Ты создаешь переменную типа массив, причем изначально пустую, а потом много раз в цикле ее модифицируешь. Тут феншуем даже не пахнет.
273 mistеr
 
08.12.20
19:19
Реализовывал какой-то численный алгоритм, детали уже не помню.

почти никогда, но пару раз было
274 Конструктор1С
 
08.12.20
19:36
(272) надо полагать, феншуй это (161)?
275 Free_soul
 
08.12.20
19:44
да, писал я батники, cmd'шники.. какую только дрянь не писал.
Для кронов и прочей нечисти..
Стыдно.
И мыло уже теперь не то.. то ли дело было хозяйственное!

да, но только когда никто не видит
276 Злопчинский
 
08.12.20
19:56
(271)   ПойтиВПрограммисты();
- вот нихрена не понятно, за этим кодом еще будет что-то выполняться? логика кода закончена или это только часть?
277 Доктор Манхэттен
 
08.12.20
20:36
(274) Там тоже не феншуй, ибо есть цикл, остался от автора кода. Это только пример того как фильтровать массив до отправки в обработку.
278 Bigbro
 
naïve
08.12.20
20:53
доктор балабол так и не показал свою реализацию ветвления без if или я пропустил?
279 Доктор Манхэттен
 
08.12.20
21:02
(278) Повторю для тех кто в танке: После того как бигбро балабол покажет переход по метке без GOTO
280 dmpl
 
08.12.20
21:05
(258) И? Развивай мысль. С чего ты взял, что только 1 программист? Затраты в 10k$ дают выхлоп в сотни k$. Потратишь больше - и выхлоп будет больше. В исходном сообщении речь шла об эффекте от 1 человеко-месяца, потраченного на написание более эффективного кода.

(260) Так а кто сказал, что код из (158) не является законченным неделимым действием? Может там условие зависит от предыдущей итерации.

(272) Ну так попробуй сразу создать отфильтрованный массив, состоящий только из нужных элементов - без модификаций.

Предлагаю написать тебе феншуйный код сортировки массива, состоящего из ссылок на элементы справочника Номенклатура. Сортировать надо по полю Наименование. Задача практически академическая. По этой же причине использовать запросы нельзя.
281 Bigbro
 
naïve
08.12.20
21:24
(279) а пузо медом не намазать? с чего бы вдруг я тебе что-то показывал. где я обещал такое показать? пруф на мой пост балаболка.
а вот ты тельняшку на груди рвал что так плохо так не по стандартам.
вот показывай как по стандартам делать ветвления без if
доктор порожняк.
282 Доктор Манхэттен
 
08.12.20
22:17
(280) >> Ну так попробуй сразу создать отфильтрованный массив, состоящий только из нужных элементов - без модификаций.

Всегда так и делаю
283 Доктор Манхэттен
 
08.12.20
22:18
(281) Ты же меня просишь показать хрень. Я тебя тычу носом в то что ты сам не сможешь сделать то же самое что требуешь от меня, балаболка.
284 Доктор Манхэттен
 
08.12.20
22:19
(281) >> вот показывай как по стандартам делать ветвления без if
В третий раз повторяю: Сразу после того как ты покажешь как сделать переход по метке без перехода по метке. Не тупи, скучно уже от твоих одинаковых сообщений
285 Доктор Манхэттен
 
08.12.20
22:21
(281) >> а вот ты тельняшку на груди рвал что так плохо так не по стандартам.

Ответь тогда на вопрос, ты считаешь правильно использовать GOTO или нет, братец балаболка?
286 Доктор Манхэттен
 
08.12.20
22:24
(280) Задача очень простая: Ответ: невозможно отсортировать по Наименованию имея только ссылку и не используя запросы к серверу, потому что наименование хранится в базе, а в ссылке его нет.
287 sevod
 
08.12.20
23:45
О существовании "Goto" в 1С узнал лет через 6 после того как начал программировать. Долго не мог понять про какую "Метку" мне втирают. Слово "Goto" мне так и не назвали. Последний раз подобное видел в Вильнусовском Бейсике на БК. Был уверен что подобного уже нет. Не понимаю зачем это вообще надо. Все отлично работает из без этого. Если не опыт Бейсика, не понял бы что это такое.
Как вы вообще узнали что подобное в 1С существует? Не в одном обучающем материале этого не видел.

нет! Код должен быть идеален!
288 Доктор Манхэттен
 
09.12.20
05:02
Нашел способ как сделать аналог GoTo на JS. Ох щас поразвлекаемся!
289 Paint_NET
 
09.12.20
05:48
Покажи, как без if делаешь ветвления, о гуру.
290 Bigbro
 
naïve
09.12.20
05:59
(289) там клиника, он требует от меня показать как делать переходы по метке, при том что я их не использую))
но сам на прямой вопрос не отвечает)
291 Конструктор1С
 
09.12.20
06:01
(276) тут суть в чём

Если НравитсяПисатьКод() Тогда
    ПойтиВПрограммисты();

с большой долей вероятности следующему программисту не будет интересна логика похода в программисты. Возможно его интересует совсем другой участок кода. Через данную процедуру он просто добирается к нужному коду. Читающему нужно будет просто пробежаться глазами по блоку Если и занырнуть в нужную процедуру. А если будет типичноодиэсное:

Процедура ВыбратьПризвание()

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

КонецПроцедуры

то читающий код вынужден будет перечитать все эти портянки кода. По крайней мере пробежаться по ним глазами, тратя время и интеллектуальные ресурсы. Ему это нафиг не нужно, но размашистым кодом мы обрекаем читателя кода на погружение в лишние детали. Каждому программисту периодически приходится перечитывать тонны кода ради того, чтобы найти пару нужных строчек. Такого бессмысленного и беспощадного перечитывания кода не будет, если код будет хорошо структурирован
292 Paint_NET
 
09.12.20
06:04
(290) Да вижу. Но потыкать палочкой-то надо, чтоп дальше веселил :)
293 Доктор Манхэттен
 
09.12.20
06:29
(290) >> он требует от меня показать как делать переходы по метке, при том что я их не использую))

О! Наконец-то до тебя начинает понемногу доходить в чем твоя ошибка! Продолжи мысль, не останавливайся. Что ты там от меня хотел?
294 Доктор Манхэттен
 
09.12.20
06:30
(289) >> Покажи, как без if делаешь ветвления, о гуру.    

Еще один.
Ок, покажу, если ты сможешь показать как сделать переход по метке без goto.
295 Провинциальный 1сник
 
09.12.20
06:37
Ветвление в 1с без Если (для людей без ЧЮ - это чисто для прикола, в реальности не применять!)


Попытка
    ы=1/Число(<булево выражение условия>);
    // условие выполнено
    <действия по "тогда">
Исключение
    // условие не выполнено
    <действия по "иначе">
КонецПопытки
296 Paint_NET
 
09.12.20
06:43
(294) Ты совсем поехал? Почему я должен тебе это показывать, если я этим не пользуюсь и не планирую?
297 Paint_NET
 
09.12.20
06:43
Дурачок какой-то, чот даже скучно.
298 Paint_NET
 
09.12.20
06:44
(295) Ага, предлагали уже :)
299 Paint_NET
 
09.12.20
06:47
Мне, кстати, кажется, что это один из адептов фузины, те такие же упёртые и глупые :)
300 Доктор Манхэттен
 
09.12.20
07:21
(296) Бинго! Дошло наконец? Скажи что дошло, мне трудно общаться с глупыми людьми.
301 Доктор Манхэттен
 
09.12.20
07:22
(295) Использование исключений не по назначению - говнокод
302 dmpl
 
09.12.20
07:26
(283) Там и запишем: в (155) - хрень.

(286) Вот. Ты не можешь. А настоящие программисты сделают. И да, ты опять додумал. Нигде не было условия не использовать запросы к серверу. Было условие не использовать запросы.
303 Paint_NET
 
09.12.20
07:29
(300) Ты идиот? Ты сам же писал, что не используешь для ветвления if, покажи, как ты реализуешь ветвление.
304 Paint_NET
 
09.12.20
07:30
Очередная балаболка, в общем. Чот школьников тупых всё больше и больше :)
305 fisher
 
09.12.20
10:44
(303) > Ты сам же писал, что не используешь для ветвления if
Точная цитата "Условия тоже стараюсь не использовать если это функция, а не процедура."
Что совсем не одно и то же.
Правда, я тоже не очень понял, какие у него в 1С инструменты для избегания ветвления. В других языках есть способы для ряда случаев. Паттерн-матчинг там, функции высшего порядка, наследование...
А в 1С?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn