Вот задумался на эту тему. Используете ли вы этот оператор? Я вот практически ни разу его не юзал. И ни у кого в коде его не встречал. Но как ни странно в C# и других языках он остался, спрашивается зачем?
05.03.09 16:13: Перенесено модератором из 'О жизни' — Хитрик Денис
Здравствуйте, kot2009, Вы писали:
K>Вот задумался на эту тему. Используете ли вы этот оператор? Я вот практически ни разу его не юзал. И ни у кого в коде его не встречал. Но как ни странно в C# и других языках он остался, спрашивается зачем?
Использую, поскольку пишу на VBA. Но вопрос этот из темы каким лучше молотком заколачивать гвозди квадратным или круглым. Whatever does the job
Goto не рекомендуют использовать, поскольку тяжело будет поддерживать программу, но на самом деле, когда у тебя их 2-3 погоды это не делает. Ну и потом всегда есть фигня вроде:
For ...
For...
For...
хочу выйти из всех циклов
Next
Next
Next
Здравствуйте, kot2009, Вы писали:
K>Вот задумался на эту тему. Используете ли вы этот оператор? Я вот практически ни разу его не юзал. И ни у кого в коде его не встречал. Но как ни странно в C# и других языках он остался, спрашивается зачем?
Тема тут много раз обсуждалась... Смотри в КСВ
Да, я давно уже не использовал, но один подчинённый недавно использовал и по делу...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Mishka, Вы писали:
M>Использую, поскольку пишу на VBA. Но вопрос этот из темы каким лучше молотком заколачивать гвозди квадратным или круглым. Whatever does the job M>Goto не рекомендуют использовать, поскольку тяжело будет поддерживать программу, но на самом деле, когда у тебя их 2-3 погоды это не делает. Ну и потом всегда есть фигня вроде:
Даже на VBA лучше не использовать. Если для обработки исключений, то лучше оборачивать в on error resume next, далее вызов ОДНОГО метода, и далее анализ объекта err.
Для выхода из нескольких циклов сразу рулит стандартное решение — выделение циклов в один метод и return.
Здравствуйте, kot2009, Вы писали:
K>Вот задумался на эту тему. Используете ли вы этот оператор? Я вот практически ни разу его не юзал. И ни у кого в коде его не встречал. Но как ни странно в C# и других языках он остался, спрашивается зачем?
этот вопрос задавался столько раз что уже неприлично спрашивать вновь, он перешел в разряд вопросов- как надо писать "в Украине" или "на Украине". Почитай комьпютерный флуд, там имеется по теме дискусс на пару километров
Здравствуйте, elmal, Вы писали:
E>Даже на VBA лучше не использовать. Если для обработки исключений, то лучше оборачивать в on error resume next, далее вызов ОДНОГО метода, и далее анализ объекта err.
В порядке флейма: on error resume next, imho, еще хуже, чем goto. Пару лет назад пришлось разбираться, почему ничего не работает, и в то же время ничего не падает.
Использование этих операторов должно строжайше контролироваться. Административные меры типа постоянного перекрестного code review рулят.
Здравствуйте, Privalov, Вы писали:
P>В порядке флейма: on error resume next, imho, еще хуже, чем goto. Пару лет назад пришлось разбираться, почему ничего не работает, и в то же время ничего не падает.
Да, согласен, что хуже, если внутри больше одного метода — за такое убивать надо. В случае, если метод один, и после этого идет обработка err объекта — это практически полный аналог обработки исключений на нормальных языках, отличается только синтаксисом. Тем более, что я с такой красотой встречался в основном на VBScript (если б было допустимо написать на VB, я б лучше на C++ написал), там конструкции on error goto label не было.
А на деле, шас даже на нормальных языках внутри обработки исключений редко допускаю, чтоб больше одного метода было. Мучения с синтаксисом VB — хорошая школа, чтоб понять, как писать нормально поддерживаемый, хорошо читаемый код, очень многим этой школы недостает .
Здравствуйте, kot2009, Вы писали:
K>Вот задумался на эту тему. Используете ли вы этот оператор? Я вот практически ни разу его не юзал. И ни у кого в коде его не встречал. Но как ни странно в C# и других языках он остался, спрашивается зачем?
Лично я за то, чтобы признать за ним право на жизнь. Но это случаи настолько редкие...
Сейчас поискал в исходниках своей "либы на разные случаи" — ровно одно вхождение — вложенные циклы.
Здравствуйте, kot2009, Вы писали:
K>Вот задумался на эту тему. Используете ли вы этот оператор?
Последний раз использовал на бейсике, ещё когда в школе учился.
На плюсах даже не знаю как ЭТО делается, никогда не использовал и у других ни разу не видел.
Здравствуйте, _d_m_, Вы писали:
___>В функцию с 20 параметрами
Если там 20 параметров, значит явно надо сделать класс, тогда параметров будет меньше. goto не причина плохого кода, этот оператор появляется по соседству с плохим кодом, делая его еще хуже.
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, _d_m_, Вы писали:
S>>>Циклы убираются в функцию. Красиво, аккуратно и практично. А выход производится через return.
___>>В функцию с 20 параметрами
C>Скорее всего сигнализирует об ошибке(ах) в дизайне.
Здравствуйте, azzx, Вы писали:
A>Что в этом красивого? На каждый чих заводить по функции?
В том, что такой код читается как нормальный текст на английском. В том, что код выглядит нормально на любом языке. В том, что вместо написания комментария внутри метода, мы называем функцию нормальным именем, отражающей то, что она делает, и даже необъодимость в комментарии может отпасть. В том, что эту функцию можно повторно использовать в дальнейшем, можно перенести ее в другой класс, и этот рефакторинг будет вполне безопасным.
Здравствуйте, azzx, Вы писали:
S>>Циклы убираются в функцию. Красиво, аккуратно и практично. А выход производится через return.
A>Что в этом красивого? На каждый чих заводить по функции?
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, _d_m_, Вы писали:
___>>В функцию с 20 параметрами E>Если там 20 параметров, значит явно надо сделать класс, тогда параметров будет меньше. goto не причина плохого кода, этот оператор появляется по соседству с плохим кодом, делая его еще хуже.
Без фанатизма...
А оно надо описывать целый класс из-за одного goto, если данный goto не мешается?
Сообщение заговорено потомственным колдуном, целителем и магом в девятом поколении!
Модерирование или минусование сообщения ведет к половому бессилию, венерическим заболеваниям, венцу безбрачия и диарее!
Здравствуйте, Кондраций, Вы писали:
___>>>В функцию с 20 параметрами E>>Если там 20 параметров, значит явно надо сделать класс, тогда параметров будет меньше. goto не причина плохого кода, этот оператор появляется по соседству с плохим кодом, делая его еще хуже. К>Без фанатизма... К>А оно надо описывать целый класс из-за одного goto, если данный goto не мешается?
Все очень просто: если появилась надобность в goto, значит у вас ошибка на этапе проектирования.