Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2019, 11:33   #1
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию Почему не рекомендуют применять метки?

Здравствуйте. Почему не рекомендуют применять метки? Я сам видел уже их в нескольких программах, которые писал не я, как в любительской практике так и в профессиональной - на заводе. Т.е. полностью их не исключают, хотя на учебе говорили, что их нежелательно применять, кажется в идеале лучше совсем от них отказаться - признак профессиональзма.
Или плохо, когда много меток - запутываешься?
Cuprum5 вне форума Ответить с цитированием
Старый 24.07.2019, 11:39   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Или плохо, когда много меток - запутываешься?
Сам же и ответил. Программа плохо читается вплоть до нечитабельности
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.07.2019, 13:22   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Наличие меток говорит о плохо написанном коде. Есть стандарт по качеству кода MISRA который их полностью запрещает. На заводе это регламентируется стандартом предприятия (Programming Guide, Code Style).

Если брать бородатые годы 60-80. То компиляторы были некачественными и не умели корректно выходить из циклов.

Во первых да запутаешься когда много меток. Во-вторых if, for, case, FSM - это шаблоны. Они полностью заменяю код с метками. А следовательно код становится легче читать понимать. Читающий, проверяющий человек быстрее понимает логику программы и легче находит ошибки в неё.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 24.07.2019, 13:24   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Наличие меток говорит о плохо написанном коде.
Кроме нескольких вариантов применения...
p51x вне форума Ответить с цитированием
Старый 24.07.2019, 13:34   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Если брать бородатые годы 60-80. То компиляторы были некачественными и не умели корректно выходить из циклов.
Чет не помню что бы алгол, фортран или PL1 не могли корректно выходить из циклов. Но и тогда уже процедурное программирование сделало не нужным goto или почти не нужным
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.07.2019, 13:49   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,529
По умолчанию

Ну дык они и выходили через go to label За давностью не помню уже, были ли у Алгола, Фортрана и PL/I Break . Но Фортран IV и Фортран-77, не говоря уже об -2018 -- большие разницы.
digitalis вне форума Ответить с цитированием
Старый 25.07.2019, 00:13   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Почему не рекомендуют применять метки?
старые пердуны напартачили со спичками.
теперь вот молодняк пугают: спички деткам не игрушки!

на самом же деле, используемые к месту,
метки здорово упрощают и код, и жизнь.

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
когда много меток - запутываешься?
да не бывает их много на практике.

они вообще редко когда востребованы.
и так, что бы в одной функции их сразу множество потребовалось,
мне даже искусственно такой пример сходу придумать не удаётся.
_Bers вне форума Ответить с цитированием
Старый 25.07.2019, 05:24   #8
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Ну представьте себе. Вы читаете книгу :
Цитата:
Проезжая мимо деревни, с Гендальфа слетела шляпа. Не торопитесь сообщать об ошибке, ведь это тот самый случай, когда могущественный волшебник – всего лишь транспортное средство шляпы. И он как раз шёл пешком. Шляпа же была не простая. Это была волшебная шляпа с собственной волей. Гендальф уже хотел спросить, чего это она слетела с него, и в этот момент над ним через то самое место, где только что была шляпа, пролетела шальная стрела. Гендальф вскинул посох, развернулся и приготовился к бою, но противник его энтузиазма не разделил. Шляпа же не упала на землю, а сначала зависла, а потом вернулась магу на голову.
И после этого отрывка идёт «Дальбше читай пятый абзац на 1736-й странице», а всего страниц тысяч триста. И это ещё полбеды. Настоящие метки ещё и не упорядочены. Процессору пофиг, он просто копирует адрес в регистр-указатель текущей операции. А какого человеку? Но поддерживать Вашу программу будет человек, а там и без goto можно накопить пару десятков миллионов строк, которые быстро не прочитать. Без goto же метка становится просто лишним идентификатором и только безтолку замедляет трансляцию, так как не внесение её в таблицу и запись в ту же таблицу её фактического адреса нужно время. А нафига?
Цитата:
Сообщение от _Bers Посмотреть сообщение
да не бывает их много на практике.
Бывает. Это же метка, её и одной много.
taras-proger77 вне форума Ответить с цитированием
Старый 25.07.2019, 05:29   #9
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
на самом же деле, используемые к месту,
метки здорово упрощают и код, и жизнь.
Каждый раз, когда ты с помощью метки упрощаешь ещё более сложный код, на самом деле ты принимаешь полумеру, оставляя код всё ещё сложным, вместо того, чтоб написать по-настоящему просто. И даже если ты один раз за всю карьеру найдёшь оправдание существованию метки в языке, этим ты не оправдаешь время, потраченное на их изучение.
taras-proger77 вне форума Ответить с цитированием
Старый 26.07.2019, 18:15   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Бывает. Это же метка, её и одной много.
что за чушь?

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Каждый раз, когда ты с помощью метки упрощаешь ещё более сложный код
ты ещё скажи: в мире умирает один котенак.

чухня в таком духе может и прокатит где нибудь на ГД,
но мне такое писать не нужно.

я не люблю глупости.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
роботы, пора применять Ципихович Эндрю Микроконтроллеры, робототехника, схемотехника, 3D принтеры 6 03.05.2018 15:01
Метки глобально wany.iv Общие вопросы Delphi 1 04.12.2017 19:59
Почему в ассемблерной вставке не работают метки mseshuk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 18.10.2015 15:06
Не работают метки ИВэТэшка Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.07.2009 22:05
NoteBook - почему использование не рекомендуют??? Roof Компоненты Delphi 4 31.01.2009 18:38