|
Оператор GoTo, безусловный переход или правила хорошего тона |
|
|
|
Sep 29 2006, 15:13
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 17-01-06
Пользователь №: 13 275

|
Почему считается, что "нехорошо" использовать данного оператора?
|
|
|
|
|
 |
Ответов
|
Sep 30 2006, 06:10
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(_artem_ @ Sep 30 2006, 01:40)  Была какая то статья, с которой весь этот садомазоэстетический спор в мире програмистов начался, не помню только ее название. Началась это на моей памяти Виртом с обоснования теоретической базы "Паскаля" как попытки создать язык идеальный для толкования компилятором ну априори предполагаемый "удобным" для пользователя ввиду его однозначности. Для компилятора, спору нет, goto в большинстве случаев - проблема, ибо начисто ломает его все стандартные "домашние заготовки". Соответственно простые компиляторы давних времен генерили весьма поганый код. Компиляторы поумнели и стали нормально понимать удобные человеку конструкции, идеалисты от компиляции продолжают движение и дошли до "Оберона". На сегодняшний день причин не использовать в "C" goto в удобном месте нет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 30 2006, 09:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(zltigo @ Sep 30 2006, 10:10)  На сегодняшний день причин не использовать в "C" goto в удобном месте нет. Хм.... Причина есть! И на сегодняшний день она ещё более актуальна! Дело в том, что сейчас серьёзный проект можно написать только работая в команде разработчиков. И для того, что бы в твоём коде можно было разобраться другому человеку, надо писать по общепринятым "правилам хорошего тона". Одним из правил является форматирование отступами вложенного кода (например тело цикла, условия - так проще найти глазами конец цикла и условия и т.д.). С использованием Goto такое форматирование осуществить в общем случае невозможно, что приводит полному мясу кода, который спустя некоторое время не только сторонний человек понять не сможет, но и даже сам разработчик. А компиляторы тут ни при чём, сейчас они умные. ИМХО любой логичный алгоритм можно изящно записать без Goto. Это как "любую мысль можно передать без мата".
|
|
|
|
|
Sep 30 2006, 10:04
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Petka @ Sep 30 2006, 12:43)  С использованием Goto такое форматирование осуществить в общем случае невозможно, что приводит полному мясу кода, который спустя некоторое время не только сторонний человек понять не сможет, но и даже сам разработчик. Если выражаться коротко, то это бред. Цитата ИМХО любой логичный алгоритм можно изящно записать без Goto. Это как "любую мысль можно передать без мата". Можно все, но не изящно. Ибо понятие изящно применимо к более-менее искуственно замкнутым системам. Там где на систему плотно влияют внешние непреодолимые обстоятельства там и требуются якобы "неизящные" выходы и не самые исключения, которые подтверждают правила. Причем попав в такую ситуацию я предпочитаю четко и ясно выразить свлю мысль, например словом "пи....ц", поятным каждому нормальному человеку а не "изящно" и муторно с жевать сопли для "литературной" передачи мысли.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
J_B Оператор GoTo Sep 29 2006, 15:13 Yura_K Как я понимаю, этот оператор неявно присутствует в... Sep 29 2006, 16:02 J_B Полностью согласен, взять ассемблер - циклов без м... Sep 29 2006, 16:22 ktod Это филосовский вопрос. И ответ на него будет: ... Sep 29 2006, 16:46 rezident Гм. Когда-то давно (больше 15 лет назад) у нас в у... Sep 29 2006, 16:47 jorikdima Я слышал, что причина в том, что не известно будет... Sep 29 2006, 16:47 bodja74 Потому что оператор безусловного перехода не сохра... Sep 29 2006, 16:56 singlskv ЦитатаПочему считается, что "нехорошо" и... Sep 29 2006, 18:05  bodja74 Цитата(singlskv @ Sep 29 2006, 21:05) [Ис... Sep 29 2006, 20:32   Сергей Борщ Цитата(bodja74 @ Sep 29 2006, 23:32) И пе... Sep 29 2006, 21:57 CD_Eater Программу проще понять, если она состоит из станда... Sep 29 2006, 17:27 muravei Цитата(CD_Eater @ Sep 29 2006, 21:27) В н... Sep 29 2006, 17:31 artem100 go to
не явно присутствует во всех языках всегда
... Sep 29 2006, 17:51 singlskv Цитата(J_B @ Sep 29 2006, 19:13) Почему с... Sep 29 2006, 18:39 Леонид Иванович Единственная ситуация, когда нужен goto, это обраб... Sep 29 2006, 19:09    Petka Цитата(zltigo @ Sep 30 2006, 14:04) Цитат... Sep 30 2006, 14:40     zltigo Цитата(Petka @ Sep 30 2006, 17:40) Аргуме... Sep 30 2006, 15:07 J_B Спасибо высказавшимся, просто написал переход от д... Sep 30 2006, 04:24 CD_Eater Цитата(zltigo @ Sep 30 2006, 14:04) Цитат... Sep 30 2006, 12:20 zltigo Цитата(CD_Eater @ Sep 30 2006, 15:20) А е... Sep 30 2006, 12:52 goodwin Совсем недавно была дискуссия на телесистемах по п... Sep 30 2006, 12:41 J_B Особо переделкой без goto не занимался, но кто что... Sep 30 2006, 14:27 zltigo Цитата(J_B @ Sep 30 2006, 17:27) Смысл та... Sep 30 2006, 14:56 xemul Цитата(J_B @ Sep 30 2006, 18:27) Особо пе... Sep 30 2006, 15:45 zltigo Код seg[0] = tmp/100;
seg[2] = tm... Sep 30 2006, 15:55 xemul Цитата(zltigo @ Sep 30 2006, 19:55) Код s... Sep 30 2006, 16:02 prottoss Выскажусь тоже про goto... так как несколько раз п... Sep 30 2006, 16:08 _artem_ Я использую goto, но это не тот случай. Не проверя... Sep 30 2006, 17:08 WHALE 2 artem_ Вы про цикл с постусловием do while слыша... Sep 30 2006, 18:40 _artem_ WHALE, во первых я не из пешеры), во вторых это не... Sep 30 2006, 19:55 WHALE for(I=0;I<=2;I++)
{
do{
TMP_P=TMP;
... Sep 30 2006, 21:25 _artem_ Да никаких извинений не нужно, не обиделся.) Я сам... Sep 30 2006, 22:17 Rst7 Господа, о чем речь? Посмотрите в исходники библио... Oct 1 2006, 06:54 bve Мне кажется, что "ноги растут" от старин... Oct 1 2006, 15:19 _artem_ Вы правы - http://en.wikipedia.org/wiki/GOTO
Но ч... Oct 1 2006, 15:39 _Bill Цитата(J_B @ Sep 29 2006, 18:13) Почему с... Oct 2 2006, 07:48 AVNN Что касается AVR и goto, то при использовании опт... Oct 2 2006, 08:22 _Bill Цитата(AVNN @ Oct 2 2006, 11:22) Что каса... Oct 2 2006, 08:35 defunct Всякий овощ полезен будучи приготовленным надлежащ... Oct 2 2006, 10:12 ValBag Во всех наставлениях по СИ для МК "...настоят... Oct 24 2007, 06:19 alexander55 Цитата(ValBag @ Oct 24 2007, 10:19)
goto... Oct 24 2007, 07:01 dxp Цитата(ValBag @ Oct 24 2007, 13:19) Во вс... Oct 24 2007, 07:19  ReAl Цитата(dxp @ Oct 24 2007, 09:19) Существу... Oct 24 2007, 11:55   SasaVitebsk Цитата(ReAl @ Oct 24 2007, 14:55) Ещё в 9... Oct 28 2007, 11:32 andron86 Цитата(ValBag @ Oct 24 2007, 08:19) Для п... Oct 24 2007, 07:23  alexander55 Цитата(andron86 @ Oct 24 2007, 11:23) Раб... Oct 24 2007, 07:58   zltigo Цитата(alexander55 @ Oct 24 2007, 10:58) ... Oct 24 2007, 08:07    alexander55 Цитата(zltigo @ Oct 24 2007, 12:07) Вот т... Oct 24 2007, 08:13   andron86 Цитата(alexander55 @ Oct 24 2007, 09:58) ... Oct 24 2007, 08:38 defunct Цитата(ValBag @ Oct 24 2007, 09:19) Для п... Oct 24 2007, 12:42 bodja74 В ассемблере вообще ни в чем ограничений нет
Пр... Oct 24 2007, 06:40 DASM Чисто в лоб типа такого
Кодwhile (1)
{
... Oct 24 2007, 06:45 IEC Ну результат почти такой же. В текущем примере из-... Oct 24 2007, 07:07 ReAl Цитата(IEC @ Oct 24 2007, 09:07) А вообще... Oct 24 2007, 11:46 zltigo Продолжаем в уже существующей ветке:
http://electr... Oct 24 2007, 07:19 ValBag Прошу прощения за создание новой темы без поиска.
... Oct 24 2007, 09:49 Maddy А собственно чего все так на бедного goto оплчилис... Oct 24 2007, 10:02 aesok GCC Bugzilla:
Only very good and very bad progra... Oct 24 2007, 10:04 alexander55 Цитата(aesok @ Oct 24 2007, 14:04) Only v... Oct 24 2007, 10:21 DASM Не отношу себя ни к вери гуд ни вери бэд, но со вр... Oct 24 2007, 10:19 DASM OFF - ReAL - а как код в трубочку свернули ? Oct 24 2007, 11:49 ValBag Перечитал всю тему. На мой взгляд отказ от примене... Oct 24 2007, 12:06 ReAl Цитата(ValBag @ Oct 24 2007, 14:06) Отред... Oct 24 2007, 12:27 ReAl Цитата(ValBag @ Oct 24 2007, 14:06) Тот ж... Oct 24 2007, 12:29 DASM А что по вашему ReAl сделал ? Oct 24 2007, 12:09 ValBag Цитата(DASM @ Oct 24 2007, 20:09) А что п... Oct 24 2007, 12:29 ReAl Раз уж я тут застрял - что я имел ввиду под ... Oct 24 2007, 12:50 ValBag ReAl ЦитатаА тут мы переводим текст с чего-то типа... Oct 24 2007, 13:09 defunct Цитата(ValBag @ Oct 24 2007, 16:09) А чем... Oct 24 2007, 13:16 ReAl Цитата(ValBag @ Oct 24 2007, 15:09) ReAl ... Oct 24 2007, 13:46  ValBag Цитата(ReAl @ Oct 24 2007, 21:46) пример ... Oct 24 2007, 14:01 ValBag defunct Понятно, появляется рябь в глазах, а затем... Oct 24 2007, 13:33 alexander55 Цитата(ValBag @ Oct 24 2007, 17:33) defun... Oct 24 2007, 13:44 ValBag REAL
Шашечек конечно не надо, но и ехать не получа... Oct 25 2007, 12:45 ReAl Цитата(ValBag @ Oct 25 2007, 14:45) Самое... Oct 25 2007, 22:04 ValBag ReAl
Теперь все понятно! Только наверное надо ... Oct 27 2007, 08:58 ReAl Цитата(ValBag @ Oct 27 2007, 10:58) Тольк... Oct 27 2007, 10:16 sensor_ua ЦитатаТут эти скобки не обязательны - согласно при... Oct 27 2007, 10:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|