Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.95.38] |
|
Страницы: (32) « Первая ... 11 12 [13] 14 15 ... 31 32 ( Перейти к последнему сообщению ) |
Сообщ.
#181
,
|
|
|
Ну и это забыл, видимо
Цитата applegame @ Иногда goto вполне себе хорош. Была ситуация, когда в относительно длинной функции в нескольких местах надо было прервать выполнение, сделать несколько операций и выйти из функции. Наиболее простым и понятным вариантом оказался вариант с goto: int foo() { ... goto end; ... goto end; ... goto end; ... end: ... return; } Так что goto иногда можно и должно применять. Религиозные фанатики идут лесом. |
Сообщ.
#182
,
|
|
|
Цитата D_KEY @ Ну и это забыл, видимо |
Сообщ.
#183
,
|
|
|
Цитата D_KEY @ Ага, забыл. Но я не религиозен. Уже не помню что там было. Кажется пилился какой-то внешний модуль для уже написанного на сях сервера ММОРПГ. И эта конструкция - бридж между модулем и сервером. Впрочем полагаю, что сейчас бы я написал по-другому. Ну и это забыл, видимо |
Сообщ.
#184
,
|
|
|
Кстати, D_KEY, хороший Cшный паттерн SEHового __leave. Всяко лучше, чем многоэтажные if
Добавлено Вы как-то забыли, что критикуется не goto, как и вообще передачи управления. Критике подвергается неструктурный подход к архитектуре программы, к которой goto может легко привести. Применение же goto само по себе являться дурным тоном не может. |
Сообщ.
#185
,
|
|
|
В си goto нормальная конструкция для подобных случаев. В C++ разве что для выхода из вложенных циклов и пр. такого. Хотя я уже и не вспомню, когда использовал в плюсовом коде goto...
|
Сообщ.
#186
,
|
|
|
Цитата OpenGL @ Так тут о том и твердят, что это религиозная заморочка, отсутствие которой иногда может помочь написать более читабельный код Так я и твержу, что с goto написать более читабельный код не получится, чем без него. Это костыль, когда не приходит в голову - как сделать красивее. Цитата OpenGL @ Если я согласен с какой-либо одной фразой Славяна, то это не означает, что я буду согласен и с остальными Так ты согласился со всем его постом, а не с конкретной фразой. Я уточнил что он под своим постом, под которым ты согласился, подразумевал. Не более. |
Сообщ.
#187
,
|
|
|
Цитата KILLER @ Так я и твержу, что с goto написать более читабельный код не получится, чем без него. Это костыль, когда не приходит в голову - как сделать красивее. У Qraizer-а получилось. Цитата KILLER @ Так ты согласился со всем его постом, а не с конкретной фразой. В посте, с которым я согласился, не было ничего про (не)обязательность разбиения большой функции. Уточнение, в котором ты спрашивал про разбиение, я видел, но с ним я не согласен. И вообще - тебе спорить больше не о чем что ли? |
Сообщ.
#188
,
|
|
|
Цитата OpenGL @ У Qraizer-а получилось. Тот пример выглядит ужасно. Незнаю что у него и где получилось. Но я бы так не делал. Добавлено Цитата OpenGL @ В посте, с которым я согласился, не было ничего про (не)обязательность разбиения большой функции. Уточнение, в котором ты спрашивал про разбиение, я видел, но с ним я не согласен. И вообще - тебе спорить больше не о чем что ли? Про это речь и велась в том посте, перечитай. |
Сообщ.
#189
,
|
|
|
Цитата OpenGL @ Я старался .У Qraizer-а получилось. Вообще, у меня стойкое ощущение, что разговор идёт в том же духе, как если бы обсуждались "исключения vs коды ошибок". Исключения по своей природе несруктурны, и без них вполне можно прожить, однако многие считают и не без оснований, что зачастую с ними проще. Фактически это означает, что не всегда структурный код лучше несруктурного. С goto такая же петрушка, вот и весь сказ. Просто goto не позволяет покинуть пределы функции. Да, он не будет вызывать деструкторы блоков, пределы которых он покидает, но в пределах функции ненужность этого ввиду отсутствия затрагиваемых локальных объектов относительно несложно ревьюжится, зато работает быстрее. Так же как отсутствие затрагиваемых локальных объектов (будучи доказанным) может служить мотивацией замены исключений на <csetjmp>. Остальные случаи применения goto, несвязанные с обработкой ошибок, можно пересчитать по пальцам. |
Сообщ.
#190
,
|
|
|
Цитата KILLER @ Тот пример выглядит ужасно. Незнаю что у него и где получилось. Но я бы так не делал. Напиши, как бы ты делал. Цитата KILLER @ Про это речь и велась в том посте, перечитай. Ну как скажешь. Объяснять семантику слов русского языка и введение в курс элементарной логики мне в общем-то неинтересно. |
Сообщ.
#191
,
|
|
|
Цитата OpenGL @ Напиши, как бы ты делал. Пусть Qraizer сформулирует задачу. Я напишу. Ибо тот код в принципе - отражение одного конкретного мнения, как сделал он. Цитата OpenGL @ Ну как скажешь. Объяснять семантику слов русского языка и введение в курс элементарной логики мне в общем-то неинтересно. Объясняю: Цитата Славян @ Мы выносим f(x), если её описание длинно, а пользоваться ею придётся не раз, скажем. Аналогично с классами (POINT и т.п.). А вот выносить из функции функцию лишь бы не было goto - однократное занятие, потому и искусственное, а значит - неправильное. В этоп посте, идет речь о том, что выносится все, что описано длинно и будет заюзано не один раз в конечном итоге, так ясно? |
Сообщ.
#192
,
|
|
|
Цитата KILLER @ В этоп посте, идет речь о том, что выносится все, что описано длинно и будет заюзано не один раз в конечном итоге, так ясно? Да. Хочешь сказать, что из этого следует, что всё, что этим пунктам не удовлетворяет, выноситься не должно? Добавлено Цитата KILLER @ Пусть Qraizer сформулирует задачу. В той теме всё есть, в общем-то. |
Сообщ.
#193
,
|
|
|
Та чё там формулировать-то. Есть код без всяких излишеств. Вдруг понадобилось научить его по событию сохранять прогресс и терминатиться, а позже при запуске восстанавливать сохранённый прогресс. Всё.
P.S. Я ж предложил интересную тему для Холивара: методы заранее заложить в дизайн вот такой вот "хибернет", только уровня приложения, а не всего компа. |
Сообщ.
#194
,
|
|
|
Цитата Qraizer @ Файберы ака сопрограммы? Вдруг понадобилось научить его по событию сохранять прогресс и терминатиться, а позже при запуске восстанавливать сохранённый прогресс. Всё. P.S. Я ж предложил интересную тему для Холивара: методы заранее заложить в дизайн вот такой вот "хибернет", только уровня приложения, а не всего компа. |
Сообщ.
#195
,
|
|
|
Цитата OpenGL @ Да. Хочешь сказать, что из этого следует, что всё, что этим пунктам не удовлетворяет, выноситься не должно? Переформулируй, не понял ответа твоего, вернее могу не так ответить, так как не понял смысла того что ты написал. В общем переформулируй вопрос. Цитата OpenGL @ В той теме всё есть, в общем-то. Нет там ничего, есть просто код, от фонаря, который вкинул Qraizer. Добавлено Цитата Qraizer @ Та чё там формулировать-то. Есть код без всяких излишеств. Вдруг понадобилось научить его по событию сохранять прогресс и терминатиться, а позже при запуске восстанавливать сохранённый прогресс. Всё Ну так по событию и терминатится, а при запуске востанавливать сохраненный прогресс? Добавлено Вообще про эти хибернейты что ты писал Qraizer - можно отдельную тему в холиварах создавать, правда хз что там холиварить, но я точно до 20 мая ниче серьезного не буду писать в принципе, ибо нет времени в принципе. День на работе, вечер - занят под завязку. После 20 мая, ближе к лету, по идее должно появится куча времени. И если ты сформулируешь ТЗ, я очень был бы тебе благодарен, так как у меня после 20 мая будет(я надеюсь) период востановления после C#, и я очень хотел бы чтобы ты эту задачу сформулировал более яснее, я ее добавлю это в закладки, мне это нужно, ибо в тематике ноль полный. Цитата Qraizer @ Заодно могу предложить ещё одну тему для холивара: предложите наиболее удачный вариант реализовать "хибернет" в рамках вашего приложения. Сразу предупреждаю, что речь не идёт о том, чтобы переделать существующее приложение, ресь о том, чтобы "хибернет" заранее заложить в архитектуру. Вот например - продолжи мыслю. Например - что за программа(от фонаря например) - плеер там, БД, еще что то? Просто хотя бы немного распиши ТЗ плз. Немного нужно реабилитироваться, как раз пригодится. |