Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Совершенный код. Мастер-класс - Макконнелл С.

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 193 194 195 196 197 198 < 199 > 200 201 202 203 204 205 .. 426 >> Следующая

опустить проверку dataAvailable во втором условии if
Краткий итог основных принципов использования goto
Использование goto - это вопрос религии. Моя догма: в
современных языках вы легко можете заменить девять из десяти
операторов goto эквивалентными последовательными
конструкциями. В этих простых случаях вы должны заменять
операторы goto просто по привычке. В сложных случаях вы также
можете изгнать goto в девяти случаях из десяти: можно разбить
код на меньшие по размеру методы, использовать try-finally или
вложенные if проверять и перепроверять статусную переменную
или реструктурировать условные выражения. Исключить goto в
таких случаях сложнее, но это хорошее умственное упражнение, а
методы, обсуждаемые в этом разделе, предлагают вам инструменты
для этих целей.
В одном случае, оставшемся из 100, в котором применение goto -
вполне легальное решение задачи, подробно задокументируйте, а
затем используйте его. Если у вас на ногах резиновые сапоги,
не стоит обходить весь квартал, чтобы не запачкаться в грязной
луже. Но не отвергайте варианты избавления от goto, предла-
гаемые другими программистами. Они могут заметить то, на что
вы не обратили внимания.
Вот сводка принципов использования goto.
¦ Применяйте goto для эмуляции структурированных управляющих
конструкций в языках, не поддерживающих их напрямую. Причем
эмулируйте их точно - не злоупотребляйте дополнительной
гибкостью, предоставляемой оператором goto.
Ш Не используйте goto, если доступна эквивалентная встроенная
конструкция.
¦ Измеряйте производительность всех goto,
используемых Перекрестная ссылка 0 новы- . . D _
шении эффективности см. та- для повышения эффективности. В
большинстве случаев вы т 25 и 26. можете переписать код без
goto с целью повышения чита
бельности и при этом не потерять в эффективности. Если ваш
случай - исключение, задокументируйе улучшение эффективности
так, чтобы поборники кода без goto не удалили эти операторы,
когда их увидят.
¦ Ограничьтесь использованием одной метки goto на метод, если
только вы не эмулируете управляющие конструкции.

Это точное механическое преобразование логики варианта с goto.
Здесь переменная statusOK дополнительно проверяется два раза,
a dataAvailable - один, но сам код эквивалентен. Если
повторная проверка условия вас беспокоит, обратите внимание,
что значение statusOK не обязательно про-
ГЛАВА 17 Нестандартные управляющие структуры
401
¦ Используйте операторы goto так, чтобы их переходы были
только вперед, а не назад, если только вы не эмулируете
управляющие конструкции.
¦ Убедитесь, что используются все метки goto. Неиспользуемые
метки могут служить признаком недописанного кода, а именно
того, в котором осуществляется переход по этим меткам. Если
метки не используются, удалите их.
¦ Убедитесь, что goto не приводит к созданию недостижимого
кода.
¦ Если вы менеджер, думайте о перспективе. Битва по поводу
одного единственного goto не стоит поражения в целой войне.
Если программист представляет себе альтернативы и готов к
диалогу, то, возможно, использование goto вполне допустимо.
17.4. Перспективы нестандартных управляющих структур
Время от времени кто-нибудь решает, что эти управляющие
структуры - хорошая идея:
¦ неограниченное использование операторов goto;
¦ возможность вычислять метку перехода goto динамически и
переходить по этому адресу;
¦ возможность применения goto для перехода из середины одного
метода в середину другого;
¦ возможность вызывать метод с помощью номера строки или
метки, которые позволят начать выполнение с середины метода;
¦ возможность генерации кода программой на лету и немедленного
его выполнения.
В свое время каждая из этих идей считалась приемлемой или даже
желательной, хотя сейчас они все выглядят безнадежно
устаревшими или опасными. Область разработки ПО развивается во
многом благодаря ограничению того, что программисты могут
делать со своим кодом. В связи с этим я рассматриваю
нетрадиционные управляющие структуры с большим скептицизмом. Я
подозреваю, что большинство конструкций, упомянутых в этой
главе, со временем окажется на свалке программистских отходов
наряду с вычисляемыми метками goto, плавающими точками входа в
методы, самомодифицирующимся кодом и другими структурами,
отдающими предпочтение гибкости и удобству в ущерб
структурированности и возможности управления сложностью.
Дополнительные ресурсы
Следующие материалы позволят расширить ваши представления о
нестандартных управляющих структурах. http://cc2&com/1792
Возвраты
Fowler, Martin. Refactoring: Improving the Design of Existing
Code. Reading, MA: Addison- Wesley, 1999. В описании метода
рефакторинга под названием "Замените вложенные
402 ЧАСТЬ IV Операторы
условные выражения сторожевыми операторами" Фаулер предлагает
использовать множественные возвраты из методов для уменьшения
вложенности набора ^-выражений. Фаулер приводит доводы в
защиту того, что множественные операторы return - подходящий
Предыдущая << 1 .. 193 194 195 196 197 198 < 199 > 200 201 202 203 204 205 .. 426 >> Следующая