ФлеймФорумПрограммирование

Почему не любят goto? (4 стр)

Страницы: 13 4 5 621 Следующая »
#45
15:15, 20 окт 2011

Я уже как-то показывал здесь код с goto. Имхо, вот этим goto и плох. Автора темы попрошу попробовать в этой лапше разобраться, для понимания.

#46
15:16, 20 окт 2011

zlos
> Вы сравниваете программистов писавших безглючный код с математическим
> доказательством с говнокодерами чьи поделия глючат неписуемым образом и
> работают только с помошью чей-то матери?
Безглючного кода никто, никогда и ни разу не писал. Ещё из тех седых времён идёт притча о 2-х профессорах, которые поспорили, можно ли написать безглючную программу с первого раза. Программа получилась что-то типа 20 строк, и в ней обнаружилось несколько ошибок.
Насчёт математических доказательств - я вас умоляю. Это работает только на сравнительно простых алгоритмах, типа сортировки и многопоточно-синхронизационных примитивов (да и то с оговорками). Для чего-либо более сложного задача превращается в невыполнимую по определению. Будь это не так, у нас бы были мощные статические кодоанализаторы, которые бы для любого говнокода могли указать все косяки на стадии компиляции. Но доказана даже теорема, что такие программы невозможны.
Поэтому замахиваться с математическими доказательствами на что-либо более-менее сложное - мозгоблудство чистейшей воды. И этим не занимается никто в здравом уме. В здравом уме пишут не код, который не глючит, а код, который удобно дебажить.

> Вы про ПО шаттлов слышали? Это кустарное изделие?
А сколько в этом изделии мегабукв, и тыща девятьсот семьдесят какого оно года производства?

Lamer007
> Face PalmOS. Почитайте Маконела: Совершенный код.
От всех писулек типа "как правильно программировать" у меня остаются неизменно скорбные впечатления как об афторах, так и об чейтателях, которые их воспринимают за чистую монету. На практике оказывается, что все эти рекомендации хороши только для того, чтобы лечить на лекциях доверчивых студентов. Жизнь проще и суровее.

> Зачем в одну функцию запихивать 3*100500+с строк? Это детский сад. Вам нужно
> научится делать декомпозицию кода. 1-20 строк на функцию. Не больше. И в любом
> случае нужно делать так, чтобы функция влезала в "1 экран" по ширине и особенно
> длине.
Золотое эмпирическое правило нумер раз: "Не выноси кусок кода в функцию, если она вызывается не более чем в одном месте".
К слову сказать, рекомендую присутствующим проникнуться следующим дзеном: вызов функции - тот же самый goto. У неё даже метка есть.

TarasB
> Фигня.
Иного ответа я и не ожидал.

#47
15:17, 20 окт 2011

Den Zurin
> Попробуй написать так же коротко и понятно без GOTO.
да не вопрос

void replace_matrix_item(int **matrix, int cols, int rows,
  int value, int newvalue)
{
  for( int i = 0; i < rows; i++ )
  {
    int* foundElement = std::find(  &matrix[i][0], &matrix[i][cols], value );
    if (foundElement != &matrix[i][cols])
    {
       *foundElement = newvalue;
       break;
    }
  }
}

http://ideone.com/RcwqH
красивее правда?

#48
15:20, 20 окт 2011

Sbtrn. Devil
> Иного ответа я и не ожидал.

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

Sbtrn. Devil
> Золотое эмпирическое правило нумер раз: "Не выноси кусок кода в функцию, если
> она вызывается не более чем в одном месте".

Сам придумал?

#49
15:24, 20 окт 2011

Sbtrn. Devil
> "Не выноси кусок кода в функцию, если она вызывается не более чем в одном
> месте".
рукалицо.жпг
у меня 80% функций используются только в одном месте.

#50
16:00, 20 окт 2011

  А в gcc можно метки обрабатывать как значения и даже складывать в массив. http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values. Круто :)

  Вообще прикольно оставлять в программах хоть один goto чисто для прикола, типа такая реликтовая окаменелость.

#51
16:01, 20 окт 2011

Sbtrn. Devil
> А сколько в этом изделии мегабукв, и тыща девятьсот семьдесят какого оно года
> производства?
Меньше миллиона, оно модифицировалось и развивалось непрерывно. Этим занималась организация занимающая отдельное многоэтажное здание. Любая найденная бага означала ЧП и разбор полётов.

#52
16:02, 20 окт 2011

Den Zurin
> Тут уже обойтись без GOTO проблематично.

ИМХО если код без GOTO получился монстром, то значит код написан в корне не верно и нужно его переписать иначе.

Sbtrn. Devil
> Золотое эмпирическое правило нумер раз: "Не выноси кусок кода в функцию, если она вызывается не более чем в одном месте".

И откуда такое правило?
Я с ним не согласен.

> К слову сказать, рекомендую присутствующим проникнуться следующим дзеном: вызов функции - тот же самый goto. У неё даже метка есть.

Не важно, что происходит внутри, важно то, как это читается и понимается человеком.

#53
16:25, 20 окт 2011


в некоторых языках вообще goto нету  и нормально так живут

#54
16:30, 20 окт 2011

Sbtrn. Devil
> а практике оказывается, что все эти рекомендации хороши только для того, чтобы лечить на лекциях доверчивых студентов.
Только если вы программист-одиночка и ваш код больше никто поддерживать не будет, в том числе и вы сами. На самом деле самому неудобно поддерживать свой код, если в нем одно говно. Одна функция с хорошим названием - одно действие -- золотое правило самодокументирующегося кода. Тоесть просто комментарии писать почти не нужно будет.

#55
16:45, 20 окт 2011

Sbtrn. Devil
> if (...) goto END;
> ... // 100500 строк
> ... // и так ещё много раз, в произвольном порядке
> END:;
Ещё скажите, что пишете на Си, а не С++ (:

#56
17:04, 20 окт 2011

Lamer007
> Одна функция с хорошим названием - одно действие -- золотое правило
> самодокументирующегося кода. Тоесть просто комментарии писать почти не нужно
> будет.

+1
Зачем такой ник себе взял? Пишешь та не как ламер. :)

#57
17:11, 20 окт 2011

Executor
> Зачем такой ник себе взял?
Спасибо. :) Я этот ник очень давно взял. Тогда ник был меня достоин. Да и я в каких-нибудь областях все равно ламер (так, как и за жизнь всего не изучишь), поэтому для таких случаев ник подойдет. Не стыдно даже глупый вопрос задать будет. (:

#58
17:25, 20 окт 2011

innuendo
> в некоторых языках вообще goto нету  и нормально так живут
потому что не нужен

#59
17:34, 20 окт 2011

Den Zurin

break,

Pushkoff уже написал

Страницы: 13 4 5 621 Следующая »
ФлеймФорумПрограммирование