![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
можно этото избежать с помощью 1. смены алгоритма 2. выделить каждый цикл в функции или реализовать рекурсией (если уж так сильно нужна такая вложенность) 3. как я написал выше 4. используя гото 5. используя исключения мне кажется любую задачу где возникла необходимость решить с помощью гото, можно решить первыми тремя способами. И они как правило лучше. А исключениями вообще не стоит. Добавлено @ 15:17
пора в отпуск... Это сообщение отредактировал(а) azesmcar - 13.3.2009, 15:17 |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
про юнион все и забыли
![]() вот тут нашел дискуссию по этому поводу... http://forum.shelek.ru/index.php/topic,9852.0.html давайте сразу и тему в религиозные войны перенесем ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
"Как правило " это "не всегда". И, как правило, у каждого правила есть исключения.. ![]() Именно поэтому нельзя подходить к вопросу категорично. Новичков отпугивают от goto, потому что большая вероятность, что он будет его писать везде без разбора, а если человек понимает всю степень ответственности и сознательно выбрал этот подход, то наверняка это лучший(по крайней мере не хуже другого) из вариантов. ![]() |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Ну раз уж модератор выделил в отдельную тему скажу
До сих пор я выражал свое субьективное мнение по данному вопросу ![]() цитата: Бьерн Страуструп
любой оператор в неумелых руках может привести к нечитабельности кода и его неадекватному поведению, если писать правильно то все будет нормально, вопрос только в том что не рекомендуется использовать некоторые операторы и возможности С++, поскольку есть их более безопасные аналоги и можно обойтись и без них. Лично для меня обьективное мнение что гото в некоторых редких случая оправда - не меняет мой взгляд на этот оператор и мое субьективное мнение остается при мне ![]() |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
bsa,
Предложи крассивое решение по замене goto без пессимизации кода: try/catch, longjmp (это жОстко ((: ) ? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
Я только однажды использовал goto, более того, расширение gcc:
|
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
рекомендуется использовать только для отлова ошибок. Сатер - Решение новых сложных задач на С++ ![]() Добавлено через 3 минуты и 1 секунду
это уже что-то вроде низкоуровнего программирования, тогда чтобы что-то использовать никакие оправдания не нужны ![]() ![]() |
||||
|
|||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: нет Всего: 9 |
Страуструп по этому поводу говорит, что применение goto свидетельствует о том, что плохо продуман алгоритм (неточное цитирование, нет под рукой книги). Поэтому, наверное, такой ажиотаж вокруг этого. Это сообщение отредактировал(а) Albor - 13.3.2009, 15:57 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
bsa, в случае не очень критичного кода это можно было бы с успехом заменить на
std::map<int, function_ptr> не так ли ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
а почему не просто массив функций ? ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
нет конечно, я бы заменил на статический массив указателей на функцию, так как "ключи" имеют значения от 0 до 255. Использование map в данном случае, было бы пессимизацией. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
ну я же не знаю какие у тебя значения имели ключи..у меня был случай когда ключи было не очередны, т.е. 1, 10, 50, 143, 354..но я тоже тут использовал статический массив ради констаной скорости поиска..смотря чего нужно добится ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
можно сделать предположение по массиву меток :
и этот пример (который привел bsa) обсуждался в этой теме : http://forum.vingrad.ru/forum/topic-208226...tml#st_0_view_0 Это сообщение отредактировал(а) mes - 13.3.2009, 16:11 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
bsa, кстати, можно было и по другому.
компилятор 99% преобразует это в таблицу переходов, т.е. в принципе в то что ты написал с помощью гото ![]() Добавлено через 1 минуту и 16 секунд mes, не важно, я сам принцип имел ввиду.. Добавлено через 5 минут и 30 секунд mes, в теме которую ты прислал - ты сам привел несколько причин по которым использование гото нежелательно..я тоже люблю поспорить, но о чем мы спорим если мы думаем одинаково? ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
обратите внимание, что и в той теме я не писал об категоричном отказе от goto, а то что у goto много недостатков я и не спорю. о предвзятости и катeгоричности ![]() судя по высказываниям , то если о плохих чертах думаем одинаково, то о хороших чертах goto по разному ![]() не всегда можно/удобно применить такой подход (из за нехватки динамичности) Это сообщение отредактировал(а) mes - 13.3.2009, 16:37 |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |