![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Все вот говорят, что мол нельзя юзать goto - Небезопасно это.
Но сами юзают switch. Ведь он, по сути пострен на goto принципе. Ваше мнение и что обычно юзаете: switch/case или if/else ? -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
все юзаем
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
До обсурда опускаться не будем, ладно? Естественно, что if/else - неотъемлемая часть. Я имею виду, когда у вас некая переменная может иметь несколько значений и вы должны по каждому из них произвести соответствующие действия.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Юзаю иногда...
Но обычно роль switch-а в моих программах выполняет таблица виртуальных функций |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
Кто - "все" ? Я вот не говорю. Вообще goto редко, но юзаю, ибо есть некоторые моменты, когда с goto самый красивый вариант. То же с switch/case Это сообщение отредактировал(а) GrayCardinal - 25.4.2008, 09:54 |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Я тоже раньше думал что глобальные переменные - это нормально и ничего зазорного.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
Rickert,
СЛушай, добрый совет забей ты на шаблонное мышление. Тебе надо ? Так пиши хоть goto, хоть глобальные переменные. Вон хлопцы написали Perl 6 (Pugs) на Haskell и сидят - торчат, какие мы крутые, А вы тут про гооту и глобальные переменные ![]() Это сообщение отредактировал(а) GrayCardinal - 25.4.2008, 10:16 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
вообще, самое красивое применение goto я видел в совокупности с применением расширения компилятора gcc
что-то вроде этого
в каждом из stateX state изменяется по определенному алгоритму перепишите ка этот пример без goto ![]() число переходов недетерминировано (т. е мы не знаем сколько раз будет выполняться goto *jumps[state]) Это сообщение отредактировал(а) MAKCim - 25.4.2008, 10:32 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Не нельзя, а нежелательно. А небезопасно потому, что "goto " [goto label1] label4: Поэтому вместо того чтоб его использовать [goto label5] label1: не вкладывается в стиль языка [goto label2] label3: и затрудняет понимание ее же для самого же программиста [goto label4] label2: "давит" конструкцию программы [goto label3] label5: лучше и легче перефрзировать мысль Что вышеперечисленное будет выглядеть без "goto" приятнее, я думаю, спорить не будешь )) Бывают и красивые решения с "goto" - но человек должен хорошо чуствовать что он хочет. A если он знает - то ему запреты и не нужны, но если бы не было бы "запретов" то многие бы вместо того чтоб сформулировать мысль писали бы кучу goto. так и return на том же принципе основон - только ты не в те принципы глядишь. Реализация команд на машинном языке не имеет никакого отношения к принципам высокоуровневого языка . если надо проверить состояния одного объекта то "switch" если другие условия то " if ". Это сообщение отредактировал(а) mes - 25.4.2008, 10:27 |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Ага, спасибо за совет, я последнии несколько лет его придерживался, пока не понял что за деньги платят.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
+1 ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
не совсем понял что делает этот код. дай угадаю. наверное что-то типа этого:
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Mayk,
я уже не помню, где я это видел (код мой, он просто принцип показывает)
нет это просто динамический конечный автомат Добавлено через 1 минуту и 52 секунды Mayk, в твоем коде каждая итерация влечет за собой большое число проверок условий (число растет пропорционально числу состояний) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
А мне из-за шаблонного мышления пришлось отказаться от такого варианта:
к такому
И до сих пор меня терзают смутные сомнения, все время задаю себе вопрос: "На машинном уровне это jmp/loop + dec eax + cmp eax,N. Т.е. 3 долгих операции вместо одного jmp'a... Нафига мне оно надо было ? Из-за шаблонного мышления! |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |