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

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

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

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

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

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

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 181 182 183 184 185 186 < 187 > 188 189 190 191 192 193 .. 426 >> Следующая

372 ЧАСТЬ IV Операторы
мин для оператора break в C++, С и Java; выражений Exit-Do и
Exit-For в Visual Basic и подобных конструкций, включая
имитации с помощью goto, в языках, не поддерживающих break
напрямую. Оператор break (или его эквивалент) приводит к
завершению цикла через нормальный канал выхода. Программа
продолжает выполнение с первого оператора, расположенного
после цикла.
Оператор continue похож на break в том смысле, что это
вспомогательное средство для управления циклом. Однако вместо
выхода из цикла, continue заставляет программу пропустить тело
цикла и продолжить выполнение со следующей итерации. Оператор
continue - это сокращенный вариант блока if-then, предотвра-
щающего выполнение остальной части цикла.
Рассмотрите использование операторов break вместо логических
флагов в цикле while Порой добавление логических флагов в цикл
while с целью имитации выхода из тела цикла усложняет чтение
кода. Иногда вы можете убрать несколько уровней отступа в
цикле и упростить его управление, просто используя break
вместо группы проверок if Размещение нескольких отдельных
условий break рядом с кодом, приводящим к их выполнению, может
уменьшить вложенность и сделать цикл читабельнее.
Остерегайтесь цикла с множеством операторов break,
разбросанных по всему коду Цикл, содержащий большое количество
операторов break, может сигнализировать о нечетком
представлении структуры цикла или его роли в окружающем коде.
Рост числа break увеличивает вероятность, что цикл может быть
более ясно представлен в виде набора нескольких циклов вместо
одного цикла с множеством выходов.
Согласно статье в "Software Engineering Notes" программная
ошибка, которая 15 января 1990 года на 9 часов вывела из строя
телефонную сеть Нью-Йорка, возникла благодаря лишнему
оператору break.(SEN, 1990):
Пример ошибочного использования оператора break в блоке do-
switch-if (C++)
do {
switch
if О {

Этот break предназначался для if, но вместо этого привел к
выходу из switch.
break;
} while ( ... );
Большое количество break не обязательно означает ошибку, но их
присутствие в цикле - тревожный сигнал: как канарейка в шахте,
задыхающаяся из-за недостатка воздуха, вместо того чтобы петь.
ГЛАВА 16 Циклы 373
Используйте continue для проверок в начале цикла Хорошим
применением оператора continue будет перемещение операций в
конец тела цикла после проверки некоторого условия в его
начале. Например, если цикл читает записи, отбрасывает часть
из них, а остальные обрабатывает, вы можете поместить подобную
проверку в начало цикла:
Пример относительно безопасного использования continue
(псевдокод)
while ( not eof( file ) ) do read( record, file ) if (
record.Type <> targetType ) then continue
- Обрабатываем запись targetType. end while
Такое использование continue позволяет избегать проверок if\
что эффективно уменьшит отступы внутри всего тела цикла. С
другой стороны, если continue возникает в середине или конце
цикла, используйте вместо него if.
Используйте структуру break с метками, если ваш язык ее
поддерживает Java поддерживает помеченные операторы break, что
позволяет предотвратить проблемы, приведшие к выходу из строя
телефонов в Нью-Йорке, break с меткой можно использовать для
выхода из цикла for, условия ^или любого блока кода,
заключенного в скобки (Arnold, Gosling and Holmes, 2000).
Вот возможное решение "нью-йоркской проблемы", переписанное на
Java вместо C++, что позволяет использовать break с меткой:
Пример лучшего использования помеченного оператора break в
блоке do-switch-if (Java)
do {
switch
CALL_CENTER_DOWN: if 0 {
г- Назначение помеченного break однозначно.
break CALL_CENTER_DOWN;
}
} while ( ... );
Используйте операторы break и continue очень осторожно
Применение break исключает возможность представления цикла в
виде черного ящика. Если вы ограничиваетесь только одним
выражением для управления условием выхода из цикла, то
получаете мощное средство для упрощения циклов. Применение
break
374 ЧАСТЬ IV Операторы
заставляет читателя смотреть внутрь цикла, чтобы разобраться в
его управлении. Это усложняет понимание цикла.
Используйте break только после того, как рассмотрели все
альтернативы. Вы не можете сказать с уверенностью, хороши или
плохи конструкции continue и break. Некоторые ученые
утверждают, что это допустимые технологии в структурном
программировании, а некоторые - что нет. Поскольку вы не
знаете, правильно ли применять continue и break вообще,
используйте их, но не забывайте, что вы можете быть неправы.
На самом деле это сводится к простому утверждению: если вы не
можете аргументировать применение break или continue, не
применяя их.
Проверка граничных точек
При разработке цикла обычно представляют интерес три точки:
первая итерация, случайно выбранная итерация в середине и
последняя итерация. Когда вы создаете цикл, мысленно
пройдитесь по этим трем точкам и убедитесь, что в цикле нет
Предыдущая << 1 .. 181 182 183 184 185 186 < 187 > 188 189 190 191 192 193 .. 426 >> Следующая