[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Mik 15 ноября 2001 г. 20:43
В ответ на: Господа фанаты структурного программирования ! Кто что имеет возразить против приведеного примера ? Как переписать его лучше без goto? отправлено Linuxoid 15 ноября 2001 г. 19:13

По поводу именно этого примера - можно было бы вместо "goto bailout;" писать "return bailout();", а в функции static int bailout() написать сами понимаете что. Другое дело, когда нужно было бы в функции bailout() использовать локальные переменные вызывающей функции: передавать их как параметры (особенно если их много) не всегда оправдано. В таком случае скорее всего goto - лучшее решение.
А по поводу выхода из глубокой рекурсии: тов. или трус или лентяй должно быть имел в виду глубоко вложенный цикл и/или ветвление.
И ещё. Я не верю в рецепты типа "никогда не используйте goto" или "всегда запаковывайте всё в отдельный класс" (или как там в С++ :-). Это можно понять как совет (а не приказ) новичкам. Бывалый программер должен знать все средства языка; он сможет распорядиться ими лучшим образом в каждой конкретной ситуации. Ясно, что в случае Петрухи бывалый программер скорее всего всё сделал бы по-другому, так, что goto не понадобился бы. Но ув. Петруха и сам сказал, что он недавно перешёл с асм на С.
С уважением, Михаил.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru