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

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

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

ratinglncrement
If ( not ( score < targetScore and ratinglncrement <> 0 ) )
Then Exit Do
GetNextScore( Scorelncrement ) score = score +
scorelncrement Loop
При использовании этого типа циклов учитывайте следующие
тонкие моменты.
ГЛАВА 16 Циклы 363
Разместите все условия выхода в одном месте. Распространение
их по коду практически гарантирует, что то или иное условие
завершения будет пропущено при отладке, модификации или
тестировании.
Пишите комментарии для ясности. Если вы применяете цикл с
выходом в языке, который не поддерживает его напрямую,
используйте комментарии, чтобы сделать свои действия
очевидными.
Цикл с выходом - структурированная управляющая конструкция,
име- ющая один вход и один выход. Такая структура является
предпочтительным вариантом цикла (Software Productivity
Consortium, 1989). Доказано, что этот тип цикла легче для
понимания, чем другие. Группа студентов-програм- мистов
сравнила такой цикл с другими вариантами, имеющими выход в
начале или конце (Soloway, Bonar и Ehrlich, 1983). Тесты на
понимание для цикла с выходом выполнялись студентами на 25%
успешнее. Авторы курса пришли к выводу, что структура цикла с
выходом лучше, чем другие циклы, моделирует способ че-
ловеческого представления итеративного процесса.
В повседневной практике цикл с выходом пока еще не широко
распространен. Присяжные все еще заперты в накуренной комнате,
споря о том, годиться ли эта методика для промышленного кода.
Пока они там томятся, цикл с выходом будет хорошим
инструментом в вашем программистском наборе - при условии его
аккуратного использования.
Аномальные циклы с выходом
Другой вид цикла с выходом служит для замены следующего
варианта "полуторного" цикла:
Пример входа в середину цикла с помощью goto - ЛЯ. плохая
практика (C++)
goto Start;
while ( expression ) {
// Делаем что-то.
Шрщтт* ссылка Другие сведения об условиях завершения
представлены тш в этой шве. 06 использовании ком- ментариев в
циклах ем. подраздел "Комментирование управляющих структур"
раздела 32,5.
Start:
// Делаем что-то еще.
}
На первый взгляд, этот цикл похож на предыдущие примеры цикла
с выходом. Он используется, если выражение, обозначенное как
// делаем что-то, не должно выполняться при первом проходе
цикла, а выражение // делаем что-то еще - должно. Это тоже
конструкция с одним входом и выходом: единственный вход в цикл
- через оператор goto в начале, а выход - с помощью условия
while. Этот подход содержит две проблемы: он использует goto и
довольно необычен, чем сбивает с толку.
13-403
364 ЧАСТЬ IV Операторы
В C++ вы можете добиться того же эффекта без использования
goto, как показано в следующем примере. Если язык не
поддерживает команду break, вы можете эмулировать ее, применив
goto.
Пример кода, переписанного без использования goto - лучший
вариант (C++)
while ( true ) {
Блоки перед и после break поменяны местами.
// Делаем что-то еще.
if ( !( expression ) ) { break;
}
// Делаем что-то.
}
Когда использовать цикл for
Дополштппьныг стгоданиго О Цикл for ~ хороший вариант, если
вам нужен цикл, выпол-
других хороших приемах и&гШг няющийся определенное количество
раз. Вы можете использования циклов tor 0 зовать for в C++,
С, Java, Visual Basic и большинстве других
||щ Solid {$н!<щу|гву 1993)* языков
Применяйте циклы for в простых случаях, не требующих
управления изнутри тела цикла. Используйте их, когда
управление циклом заключается в простом инкременте или
декременте, скажем, при проходе по элементам контейнера.
Особенность цикла for в том, что его надо настроить в начале
выполнения и забыть о нем. Вам ничего не надо делать внутри
него для управления его работой. Если существует условие, по
которому выполнение цикла прерывается изнутри, вместо for
используйте конструкцию while.
Не изменяйте значение индекса цикла for явно, чтобы
принудительно его завершить. Вместо этого используйте while.
Цикл for предназначен для простых случаев. Более сложные
задачи организации циклов лучше решать с помощью цикла while.
Когда использовать цикл foreach
Цикл foreach (или его эквиваленты For-Each в Visual Basic,
for-in в Python) полезен для выполнения действий над каждым
элементом массива или другого контейнера. Его преимущество в
том, что он позволяет обойтись без вспомогательной арифметики
для обслуживания цикла и, таким образом, избежать ошибок. Вот
пример такого цикла:
ГЛАВА 16 Циклы 365
Пример цикла foreach (С#)
int [] fibonacciSequence = new int [] { 0, 1, 1, 2, 3, 5, 8,
13, 21, 34 }; int oddFibonacciNumbers = 0; int
evenFibonacciNumbers = 0;
// Подсчитываем количество четных и нечетных чисел в
последовательности Фибоначчи, foreach ( int fibonacciNumber in
fibonacciSequence ) { if ( fibonacciNumber % 2 ) == 0 ) {
evenFibonacciNumbers++;
}
else {
oddFibonacciNumbers++;
}
}
Console.WriteLine( "Found {0} odd numbers and {1} even
numbers.", oddFibonacciNumbers, evenFibonacciNumbers );
Предыдущая << 1 .. 177 178 179 180 181 182 < 183 > 184 185 186 187 188 189 .. 426 >> Следующая