1 2 3 4 ► |
Информационные технологии
:: Математика и алгоритмы
|
|
| ||||||||||||
Zapal 04.12.20 - 10:32 |
немного предыстории, возможно кто-то не в курсе. Считается что использование этой конструкции показывает низкое качество кода. В некоторых языках его просто запретили
написал вот я его недавно и задумался - я один такой плохой или нас много? Насколько это явление вообще распространено в одинэсной среде? В типовых вроде не припомню, возможно им там тоже запретили и да, давайте сразу договоримся - Прервать, Продолжить и Возврат это другое, здесь нет смысла делать опросы, их используют все. Речь конкретно о команде Перейти | ||||||||||||
ДенисЧ 1 - 04.12.20 - 10:32 | 5. Если очень хочется. | ||||||||||||
Noser2020 2 - 04.12.20 - 10:35 | (0) Каждый день. Как же без него? 1. да! Свободно и без ограничений | ||||||||||||
Документовед 3 - 04.12.20 - 10:36 | Один раз было. Несколько вложенных циклов из которых надо было выйти прервав выполнение. 3. почти никогда, но пару раз было | ||||||||||||
Noser2020 4 - 04.12.20 - 10:36 | >В типовых вроде не припомню, возможно им там тоже запретили
В УПП 1.0 было, в паре отчётов (которые частично мимо построителя отчетов работали). Вообще, это явно запрещено стандартами кодирования. | ||||||||||||
VladZ 5 - 04.12.20 - 10:37 | Не использую.
Считаю, что можно использовать в случаях, когда по-другому никак. Там, где можно отказаться от "перейти" - нужно отказаться. 3. почти никогда, но пару раз было | ||||||||||||
Dzenn 6 - 04.12.20 - 10:37 | GoTo - избитый фетиш программистской цивилизации, и его нужно уважать. Использую в двух случаях - 1) при настроении "гото", очень редко 2) при выходе из вложенных циклов. 3. почти никогда, но пару раз было | ||||||||||||
Lokli 7 - 04.12.20 - 10:38 | Не использую. И даже не пытаюсь... :) 4. нет! Код должен быть идеален! | ||||||||||||
Noser2020 8 - 04.12.20 - 10:39 | к (4) на тему запрета - оказывается наврал, только "не рекомендуется"
https://its.1c.ru/db/v8std/content/547/hdoc | ||||||||||||
acht 9 - 04.12.20 - 10:39 | (8) Второй пункт там же дочитай | ||||||||||||
Bigbro 10 - 04.12.20 - 10:39 | ни разу не понадобился )
хотя мой код далек от идеала)) 4. нет! Код должен быть идеален! | ||||||||||||
ads55 11 - 04.12.20 - 10:39 | При отладке, чтобы сразу перейти к нужной строке :)
Но в готовом решении - нет. 3. почти никогда, но пару раз было | ||||||||||||
Garykom 12 - 04.12.20 - 10:40 | Не помню чтобы использовал уже лет 20 | ||||||||||||
ДенисЧ 13 - 04.12.20 - 10:40 | (9) Веб-клиент - это отдельная пестня | ||||||||||||
elCust 14 - 04.12.20 - 10:40 | Не довожу логику программы до необходимости применения "Goto".
5. Мне не нравится голосовался ТС. Поэтому свой выбор. | ||||||||||||
acht 15 - 04.12.20 - 10:42 | (13) Чойта? | ||||||||||||
Галахад 16 - 04.12.20 - 10:44 | Выполнить.
Даже не знаю как тут можно без меток. 1. да! Свободно и без ограничений | ||||||||||||
Noser2020 17 - 04.12.20 - 10:46 | (0) Если серьёзно, goto - это, конечно, очень яркий индикатор законченного быдлокодера (Другой вопрос что на java, например, его просто нет).
Но кому какое дело, ты ведь 1Сник, а не программист - так что пиши как удобнее, быстрее и пр. Будет мешать - перепишешь (ну или кто-нибудь другой, кому будет мешать). P.S. Прямо вот пятничные посиделки в кафе (не помню как называлось) на чистых прудах вспомнились ;) P.P.S. Если что я не то чтобы серьезно, но и не совсем шучу. | ||||||||||||
Dzenn 18 - 04.12.20 - 10:46 | А кстати, зачем рассказывать без примеров?) ВЫКЛАДЫВАЙТЕ СКРИНШОТЫ! :-) | ||||||||||||
ДенисЧ 19 - 04.12.20 - 10:47 | (15) Тойта. | ||||||||||||
Андрей_Андреич 20 - 04.12.20 - 10:48 | В далекой юности первый курсовой на Фортране рассыпал перфокарты. Собрал с распечатки, но ГоТо и метку перепутал местами. Программа зациклилась. Искал ошибку 2 недели по неопытности. 4. нет! Код должен быть идеален! | ||||||||||||
ДенисЧ 21 - 04.12.20 - 10:48 | (17) @на java, например, его просто нет@
Зато есть break label. Что ничем не лучше | ||||||||||||
ДенисЧ 22 - 04.12.20 - 10:49 | (18) Друг просит? | ||||||||||||
mikecool 23 - 04.12.20 - 10:49 | пользовался, когда учился писать на 1с, ибо был глуп и неопытен 4. нет! Код должен быть идеален! | ||||||||||||
Paint_NET 24 - 04.12.20 - 10:50 | Не использовал.
Считаю, что его применение - костыль, когда лень нормально код переписать. Можно, но не стоит. | ||||||||||||
Lama12 25 - 04.12.20 - 10:50 | |||||||||||||
pudher 26 - 04.12.20 - 10:51 | Где пункт Своё? Я вот не использую, потому, что нет необходимости, а не потому, что код должен быть идеален. | ||||||||||||
Aleksey 27 - 04.12.20 - 10:51 | (17) Ты сейчас писателей типовых быдлокодерам назвал? А ты азартен, Парамоша! | ||||||||||||
ptiz 28 - 04.12.20 - 10:52 | Нет, конечно. В 1С 9.0 его быть не должно! 4. нет! Код должен быть идеален! | ||||||||||||
timurhv 29 - 04.12.20 - 10:53 | Видел только при обфускации кода.
Если человек использует его, то либо проблема с мышлением, либо лень поправить сложную конструкцию / разовая задача (тут вопрос целесообразности потраченного времени). 4. нет! Код должен быть идеален! | ||||||||||||
Noser2020 30 - 04.12.20 - 10:53 | (21)
>Зато есть break label. Что ничем не лучше Согласен. И встречается он на удивление (для меня) часто - видел в netty и jackson'е (понятно, может он в каждой второй библиотеке - но специально я всё-таки не искал ;) Рекламное место пустует | ||||||||||||
Noser2020 31 - 04.12.20 - 10:57 | > Ты сейчас писателей типовых быдлокодерам назвал?
Как минимум в массе своей goto в современных типовых нет, а может и вообще нет (да и в не современных особо не было). Специально не искал, конечно, но не могу представить чтобы такое "простили" ;) Речь, конечно. про "основные" типовые от фирмы 1С. | ||||||||||||
ReaLg 32 - 04.12.20 - 10:57 | Когда только познакомился с программированием в школе - писали на бейсике на БКшках.
Там, вроде бы использовали GO TO. Потом в универе уже была парадигма - GO TO использовать не надо. Ну, я как бы и привык, никогда не использовал. Но недавно нужно было решить специфическую задачку - я покопался в инете и нашел реализацию алгоритма на VB. Как раз с кучей GO TO. Ну и наплевался же я при переносе/дебаге. Реально как с другой планеты код. Я понимаю, что это просто другая парадигма/другой стиль, но очень непривычно и я бы не хотел в таком копаться все время :) 3. почти никогда, но пару раз было | ||||||||||||
Aleksey 33 - 04.12.20 - 11:00 | (31)
Т.е. ты не искал, но точно знаешь. Ну ну... БП Проф/Корп 3.0.83.37 - найдено 24 раза | ||||||||||||
fisher 34 - 04.12.20 - 11:03 | Пару раз было. 3. почти никогда, но пару раз было | ||||||||||||
Noser2020 35 - 04.12.20 - 11:03 | (33)
>БП Проф/Корп 3.0.83.37 - найдено 24 раза Ну что сказать - я был не прав. Прошу прощения. Думал про них гораздо лучше. | ||||||||||||
lubitelxml 36 - 04.12.20 - 11:04 | Было как-то на 7.7, можно обойтись без этого 3. почти никогда, но пару раз было | ||||||||||||
Mikeware 37 - 04.12.20 - 11:06 | (31) В ЗиКе каком-то было. Но зик вообще "неочевидная штука" | ||||||||||||
Aleksey 38 - 04.12.20 - 11:10 | КА - 11 раз
В современных типовых он встречается в одном единственном отчете - РегламентированныйОтчетПрибыльИностраннойОрганизации Поэтому в БП, КА, ЕРП, т.е. там где этот отчет есть, есть и перейти. А в УТ, ЗУП, УНФ - обошлись без перейти | ||||||||||||
1Сергей 39 - 04.12.20 - 11:14 | Бить линейкой по пальцам за GOTO
(c) Ада Лавлейс | ||||||||||||
Малыш Джон 40 - 04.12.20 - 11:16 | Фуфуфу! Вы же потом этими руками хлеб едите! 4. нет! Код должен быть идеален! | ||||||||||||
Zapal 41 - 04.12.20 - 11:16 | мое мнение - бывают ситуации когда этот переход сильно упрощает код, а значит делает его более надежным
понятно что если очень захотеть то можно всё это засунуть в пару вложенных циклов или еще как-то, но от этой правильности и принципиальности больше вреда чем пользы если оно начинает создавать трудности и да, всем которые "строго нет" - не забывайте про "Прервать, Продолжить и Возврат" которые суть тоже самое и которые вы по-любому пользуете 3. почти никогда, но пару раз было | ||||||||||||
fisher 42 - 04.12.20 - 11:21 | (41) Очень странно равнять "Прервать, Продолжить и Возврат" с гоуту. Эти конструкции не мешают создавать хороший код.
А все разы, когда я использовал гоуту (на пальцах одной руки пересчитать) - это были костыли для костыльной логики. Которой по-хорошему не должно было быть, но это был вопрос меньшей крови. | ||||||||||||
sr77 43 - 04.12.20 - 11:21 | 1 1. да! Свободно и без ограничений | ||||||||||||
Zapal 44 - 04.12.20 - 11:24 | (42) а я и не писал что мешают, я писал это они то же самое. Прерывают ход программы и перемещают её выполнение куда-то вдаль
по канонам идеального вместо Прервать ты должен написать условие и всю оставшуюся часть цикла засунуть в него | ||||||||||||
ДенисЧ 45 - 04.12.20 - 11:24 | (39) Величайшей ошибкой было бы думать. (с) В.Ульянов | ||||||||||||
fisher 46 - 04.12.20 - 11:25 | (42) + Другими словами, код с использованием гоуту не может быть хорошим. Но в некоторых кривых случаях хороший код написать не получается. | ||||||||||||
Волшебник 47 - 04.12.20 - 11:28 | Профессиональному программисту разрешается использовать:
Перейти ~метка запросы в цикле Исключение КонецПопытки; без вывода текста ошибки. литералы '00010101' и 86400 и другие коды символов комментарии в тексте запроса | ||||||||||||
acht 48 - 04.12.20 - 11:28 | А еще вместо goto можно использовать выбрасывание исключений и их перехват =) | ||||||||||||
Волшебник 49 - 04.12.20 - 11:29 | (48) Это точно. Можно даже делить на ноль. | ||||||||||||
ДенисЧ 50 - 04.12.20 - 11:30 | (46) "код с использованием гоуту не может быть хорошим"
Код и без использования перехода может быть нехорошим. Так что переход тут - совершенно незначащая величина =>0 | ||||||||||||
fisher 51 - 04.12.20 - 11:30 | Вдруг кто-то еще не читал: http://catalog.mista.ru/1c/articles/966234/ | ||||||||||||
Волшебник 52 - 04.12.20 - 11:31 | (44) Это увеличит глубину вложенности и усложнит понимание программы.
А вот фраза "Перейти ~Выход;" будет непонятна только дебилам. | ||||||||||||
mdao 53 - 04.12.20 - 11:32 | Как то неучтиво называть системных asm прогов быдлокодерами 3. почти никогда, но пару раз было | ||||||||||||
Zapal 54 - 04.12.20 - 11:32 | (48) точно, еще исключения | ||||||||||||
Zapal 55 - 04.12.20 - 11:33 | (52) ты голосуй, не стесняйся
пару раз терял уже девственность с этими метками? признавайся | ||||||||||||
PR 56 - 04.12.20 - 11:34 | (0) Сжечь ведьму! | ||||||||||||
Волшебник 57 - 04.12.20 - 11:35 | (55) Лично я их не использую, но я не ограничиваю себя.
Выход из глубокого вложенного цикла сразу на верхний уровень можно реализовать только меткой. Выход на конец процедуры тоже приветствую. Это лучше, чем пачка выходов, разбросанных по тексту процедуры. | ||||||||||||
fisher 58 - 04.12.20 - 11:36 | (44) Прервать и Продолжить и Возврат - делают переходы без потери контекста. | ||||||||||||
Zapal 59 - 04.12.20 - 11:36 | но вообще я согласен с (47)
эти правила придумали чтобы молодежь не косячила, уберечь от основных ошибок так сказать. Если человек осознаёт последствия то он волен делать то что считает нужным | ||||||||||||
alkorolev 60 - 04.12.20 - 11:39 | использую для алгоритмов, исполняемых через оператор "Выполнить", чтобы не путаться в ветвистых условиях. В данном случае Перейти ~Выход - аналог "возврата" 2. да, но только когда никто не видит Рекламное место пустует | ||||||||||||
Волшебник 61 - 04.12.20 - 11:39 | (59) Однозначно. | ||||||||||||
fisher 62 - 04.12.20 - 11:40 | (50) Я стараюсь писать хороший код. И когда у меня это получается - гоуту там нет. А вот когда приходится выбирать между видами плохого кода, то в некоторых случаях плохой код с гоуту может выглядеть получше, чем плохой код без него. | ||||||||||||
Noser2020 63 - 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)+ Добавлю что ещё разрешается профессиональному программисту:
комментирование кусков программы отсутствие комментариев понятного программного кода динамическое конструирование запросов, которые не открываются в Конструкторе звёздочка в запросах обращение к реквизитам через точку поиск по полям без индексов и другие интересные вещи | ||||||||||||
fisher 65 - 04.12.20 - 11:53 | "Разрешено" то оно конечно "разрешено". Только если он этим злоупотребляет, то никакой он в жопу не профессиональный программист. | ||||||||||||
Волшебник 66 - 04.12.20 - 11:53 | (65) Разумеется. | ||||||||||||
trooba 67 - 04.12.20 - 11:55 | Я пару раз использовал, совсем недавно и, как щас помню 10-11 лет назад. Когда цикл в цикле около 10 раз и нужно сэкономить время и уйти в конец функции... 3. почти никогда, но пару раз было | ||||||||||||
polosov 68 - 04.12.20 - 11:56 | (64) Ну так-то можно еще стековую машину 1С использовать напрямую | ||||||||||||
Zapal 69 - 04.12.20 - 12:01 | (64) запросы которые не открываются в конструкторе это прям зло злое
я сейчас никогда такое не делаю, разве что по-молодости может | ||||||||||||
Ненавижу 1С 70 - 04.12.20 - 12:03 | (57) "Выход из глубокого вложенного цикла сразу на верхний уровень можно реализовать только меткой."
можно организовать метод со всеми этими циклами и вместо goto использовать return | ||||||||||||
Fish 71 - 04.12.20 - 12:15 | (70) Возврат вернёт тебя из процедуры. А когда нужно остаться в процедуре и выйти только из цикла - тогда только Перейти. | ||||||||||||
Волшебник 72 - 04.12.20 - 12:16 | (70) "Возврат" в глубине процедуры — зло. | ||||||||||||
Ненавижу 1С 73 - 04.12.20 - 12:17 | |||||||||||||
Ненавижу 1С 74 - 04.12.20 - 12:19 | (72) зло это процедуры длиннее одного экрана, тут уж действительно и возврат в глубине зло и все остальное | ||||||||||||
trdm 75 - 04.12.20 - 12:20 | Продолжить, прервать - это частные случаи goto.
Инструмент есть инструмент. Можно конечно понтоваться, что пишещь без гоуту, но это просто понты и не более. 1. да! Свободно и без ограничений | ||||||||||||
Волшебник 76 - 04.12.20 - 12:26 | (73) Профессиональному программисту можно и так:
Попытка Выполнить "Модуль = ОбщийМодуль.Брандашмыг"; Исключение // Брандашмыг ещё не подключили Модуль = ОбщийМодуль.Гейзенбаг; КонецИсключения; | ||||||||||||
bolder 77 - 04.12.20 - 12:29 | (0) What?Пятничная тема детектед) 4. нет! Код должен быть идеален! | ||||||||||||
Ненавижу 1С 78 - 04.12.20 - 12:30 | (76) не могу запретить | ||||||||||||
MWWRuza 79 - 04.12.20 - 12:37 | Иногда, при написании чего-то "через чур замороченного", бывало, использовал(например, была задача, не учетная, по спорту, "очень хитрая" жеребьевка), в процессе написания алгоритма, проще и быстрее было так сделать, но, потом, когда все относительно правильно заработало - "причесал код", и по убирал все безусловные переходы. 3. почти никогда, но пару раз было | ||||||||||||
Доктор Манхэттен 80 - 04.12.20 - 17:41 | (0) Стараюсь не использовать никакие операторы изменения хода программы. Ни GoTо, ни Прервать, Продолжить и Возврат.
Условия тоже стараюсь не использовать если это функция, а не процедура. Переменные тоже лучше избегать, а использовать только константы, то есть переменные, которые инициализированы только один раз в месте, где они были объявлены. | ||||||||||||
Доктор Манхэттен 81 - 04.12.20 - 17:45 | Голосую 4. нет! Код должен быть идеален! | ||||||||||||
rphosts 82 - 04.12.20 - 18:00 | Когда-то на васике... ну и на асме но там не гото а джамп! 3. почти никогда, но пару раз было | ||||||||||||
Конструктор1С 83 - 04.12.20 - 18:01 | (0) как только в программировании появились методы (процедуры/функции по 1сному), гото автоматом изжил себя 4. нет! Код должен быть идеален! | ||||||||||||
ShAV 84 - 04.12.20 - 18:16 | Когда-то очень давно прочитал где-то убедительные доводы, что переходы в коде это не кошерно. И с тех пор не использовал. Было, правда, использовал в школе на занятиях на Бейсике в 1990 примерно, но это не в счет :) 4. нет! Код должен быть идеален! | ||||||||||||
ДенисЧ 85 - 04.12.20 - 18:33 | (84) Ой, ви таки из наших ? )) | ||||||||||||
NorthWind 86 - 04.12.20 - 18:50 | (0) последние лет 25 как-то не было необходимости. 4. нет! Код должен быть идеален! | ||||||||||||
Сергиус 87 - 04.12.20 - 19:37 | Честно говоря, в голову даже не приходят случаи, где он нужен настолько, что нельзя обойтись другим. | ||||||||||||
vde69 88 - 04.12.20 - 19:48 | я даже на микроконтроллерах на "С" не использую... 4. нет! Код должен быть идеален! | ||||||||||||
Eeeehhhh 89 - 04.12.20 - 21:01 | Совсем недавно пришел новый клиент - отгрузка стала. Зашел горе программист не учел нескольких условий и они всплыли в момент пика отгрузки. Варианта было 2 или переписать всю процедуру (долго час - полтора) или для этих условий перескочить на метку дальнейшего исполнения. Решил не тормозить людям отгрузку сделал гото.
Правда потом когда пришли с другой задачей переписал процедуру. Гото грех (88) а на мк стиль программирования ))) 2. да, но только когда никто не видит | ||||||||||||
Злопчинский 90 - 04.12.20 - 21:29 | Удивлю: у меня есть код. в нем есть гото. и, о блин - он работает кучу лет. и суко, не сломался еще...
;-) 2. да, но только когда никто не видит | ||||||||||||
Злопчинский 91 - 04.12.20 - 21:31 | как блин я пролграммировал на ассемблере где конструкция BR 14 - одна из основополагающих... | ||||||||||||
NorthWind 92 - 04.12.20 - 21:46 | (87) ну на асме, например, вы без джампов обойдетесь вряд ли. | ||||||||||||
Доктор Манхэттен 93 - 04.12.20 - 21:48 | (92) Если на объектно-ориентированном асме, то никаких джампов не нужно. | ||||||||||||
jbond 94 - 04.12.20 - 21:57 | В то время, когда в айти банков обсуждаются паттерны разбиения монолитов на микросервисы при котором можно избежать антипаттерт Макросервис, а в соседнем ртделе обсуждают дропинг саппорта Кубером Докера, 1Сники обсуждают использование оператора бейсика goto, который в последний раз использовался в 1993 году | ||||||||||||
youalex 95 - 04.12.20 - 22:01 | Последний раз использовал на бейсике Спектрума.
И да, GOTO это как реквизит комментарий. реквизит комментарий часто говорит о том, что в объекте реально недостает какого-то реквизита. GOTO - сигнализирует о том, что пора разобрать свое любимое спагетти на аккуратные функции. | ||||||||||||
youalex 96 - 04.12.20 - 22:01 | Собственно, вот: 4. нет! Код должен быть идеален! | ||||||||||||
dmpl 97 - 04.12.20 - 22:07 | (0) Только вот честно - уже и не помню, когда в последний раз была ситуация, когда эта конструкция могла бы потребоваться на ЯВУ. А так - был бы смысл - использовал бы. Как, например, в Ассемблере. 1. да! Свободно и без ограничений | ||||||||||||
Доктор Манхэттен 98 - 04.12.20 - 22:10 | (94) Прикинулся как будто знаешь много умных слов, но тут многие понимают эти слова, так что ты лоханулся. | ||||||||||||
dmpl 99 - 04.12.20 - 22:14 | (41) Прервать, Продолжить и Возврат, все же, не позволяют "заскочить" в произвольное место в том же вложенном цикле, что GOTO позволяет. | ||||||||||||
dmpl 100 - 04.12.20 - 22:18 | (44) С помощью GOTO ты можешь вернуть управление на 10 строчек назад, например. И обычно он используется как раз тогда, когда другими конструкциями не получается передать управление в нужное место. Именно поэтому GOTO и не рекомендуется, что для тех случаев, когда его использование было бы оправдано, уже есть отдельные конструкции. |
1 2 3 4 ► |
Список тем форума
|