![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Я подвожу итоги!
три оператора могут(должны for, while, goto. два первых-одно и тоже. Только вот goto работает без разрушения обьектов внутри него. Ну и. Теперь слово за ненавидящими goto в пользу while и for -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Если имеется в виду x86 инструкции loop, то это уже давно не так. Цикл закодированный с помощью обычных команд перехода получается быстрее. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Mayk
И че-рушится? А если фигурные скобки убрать? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
имелось в виду, что при выходе из блока с помощью goto объекты нормально удаляются... -------------------- qqq |
|||
|
||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
А если вспомнить про немаловажную вещь как Стиль программирования С++?
Правильный и неправильный? goto - неправильный. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| Mayk |
|
||||||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Я повторюсь, но у компиляторов иное мнение на этот счёт (посмотри листинги борлы, вязанки, гнуса. Они далеко не все forы и whileы в луп пихают.
вот отрывок из асма(компилил как g++ -O3 a.cpp)
Добавлено @ 18:19
А если фигурные скобки убрать? © Это сообщение отредактировал(а) Mayk - 27.10.2005, 18:22 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||||||
|
|||||||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Mayk
Еще раз прошу-аргументы... Кто сказал такое- твой преподаватель, друг , книжники буржуазные? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Допустим, goto полезно использовать внутри одного блока.
Но если начать использовать goto в разных блоках, то результаты непредсказуемы. И вообще я домой. Рабочий день кончился. Вложенный цикл единственное место где полезно использовать goto. В остальных случаях ругайте свои руки, за кривой код. Это сообщение отредактировал(а) Neitron - 27.10.2005, 18:27 -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Ладно и я домой.
Пока в goto ничего плохого с точки зрения работы не увидел.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Любопытно. Автор весьма пристрастен или лукавит. Небольшое изменение в его же коде( is_valid() - лишняя , а create при неудаче выбрасывает исключение) и все становиться весьма прозрачно и лаконично. В том числе и вывод лога. Можно кстати повозиться с темплайтаим и все встанет на свои места
Сравниваем с этим
Выводы делайте сами. -------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
меня нельзя отнести к ненавидящим, но попробую предположить, почему goto пытаются использовать поменьше: его проще использовать неправильно деление последовательности операторов на блоки {} лично мне очень помогает, оно позволяет структурировать код, даже необязательно, чтобы был какой-то цикл или условный оператор, создавать маленькие объекты в стеке на очень маленькое время, просто попользоваться и удалить использование оператора goto в принципе позволяет переходить границы этих блоков: выходить и входить в этом он схож с исключениями - те позволяют выходить из блоков и, по многим отзывам, являются далеко не самым хорошо понимаемым элементом C++ только, если выход из блока можно обработать более-менее корректно - просто поудалять объекты, то с несанкционированным входом в блок начинаются проблемы, из-за того, что в отличие от уничтожения объекта способов создания может быть куча... и, пожалуйста, не надо говорить "так не надо использовать goto для прыжком между блоками", потому что по той же логике не стоит делать в класах protected и private вся эволюция средств программирования направлена не только на повышение производительности программиста, но и на уменьшение вероятности ошибок и упрощение их обнаружения Это сообщение отредактировал(а) maxim1000 - 27.10.2005, 18:33 -------------------- qqq |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
В соответствии с упоминавшейся выше RAII функция-член create() тут тоже лишняя. А если её выбросить, то пропадёт неоднозначность в порядке вызовов деструкторов, что было одним из аргументов автора. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
а вот тут, уважаемый maxim1000, я бы возразил попробовал сделать, то что описал, оказывается, что запрещено пропускать инициализацию объектов с помощью goto... Добавлено @ 18:44 а для выходов из циклов, пожалуй, подходит... -------------------- qqq |
|||
|
||||
| Vyacheslav |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
А Вы не создавайте в цикле
И вот после этого начинаем думать в каких случаях когда удаляется и когда создается А теперь делаем финт ушами
-------------------- С уважением, Вячеслав Ермолаев |
||||||||
|
|||||||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Лично у меня возникает вопрос почему все книжники так говорят?B ведь не С один в других языках анологично.Все пишут одно и тоже: -это противоречит принципам структурного програмирования -злоупотребление goto может привести к нестабильной работе приложения. Никаких аргументов в доказательство этоих правил не приводится.Это как аксеома програмирования,но это таким не является. Единственной мысолью которая у меня приходит в голову-это то что когда-то давным давно действительно goto(или подобный оператор) по каким то причинам использовать было опасно(к примеру компелятор плохо с ними спровлялся).В результате этого наложили на него табу.Прошло время и из покаления в покаление это табу передавалось,но никто не проверял правдивость этого правила. ЗЫ А с чего все начиналось:c детской игрушки -------------------- Жизнь - печальная штука. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |