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

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

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

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

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

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

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

языка Ada решили сделать индексы цикла for недоступными вне
цикла. Попытка использования переменной-индекса вне цикла for
приводит к ошибке времени компиляции.
C++ и Java в какой-то мере реализуют ту же идею - они
позволяют объявлять индексы цикла в нем самом, но не требуют
этого. Выше, в примере раздела "Избегайте писать код,
зависящий от последнего значения индекса цикла", переменная
recordCount может быть объявлена внутри выражения for, что
ограничит ее область видимости этим циклом:
Пример объявления переменной-индекса цикла внутри цикла for
(C++)
for ( int recordCount = 0; recordCount < MAX_REC0RDS;
recordCount++ ) {
// Циклический код, использующий recordCount.
}
В принципе эта методика должна позволять создавать код,
повторно объявляющий переменную recordCount в нескольких
циклах без риска неправильного использования двух разных
recordCount. Такое применение позволило бы писать, например,
такой код:
Пример объявления переменных-индексов внутри циклов for и их
(возможно!) безопасное повторное использование (C++)
for ( int recordCount = 0; reco.rdCount < MAX_REC0RDS;
recordCount++ ) {
// Циклический код, использующий recordCount.
}

for ( i = 0; i < numDivisions; i++ ) { sum = sum +
transaction[ j ][ i ][ k ];
ГЛАВА 16 Циклы 377
// Промежуточный код.
for ( int recordCount = 0; recordCount < MAX_REC0RDS;
recordCount++ ) {
// Дополнительный циклический код, использующий другую
переменную recordCount.
}
Такая методика полезна для документирования назначения
переменной recordCount. Однако не полагайтесь на ваш
компилятор в вопросе области видимости recordCount. В разделе
6.3.3.1 книги "The C++ Programming Language" (Stroustrup,
1997) говорится, что переменная recordCount должна иметь
область видимости, ограниченную ее циклом. Но, проверив эту
функциональность в трех разных компиляторах C++, я получил три
разных результата:
¦ первый компилятор сигнализировал о повторном объявлении
переменной recordCount во втором цикле for и сгенерировал
ошибку;
¦ второй компилятор допустил объявление переменной recordCount
во втором цикле for, но разрешил ее использование вне
первого цикла for;
¦ третий компилятор разрешил оба объявления переменных
recordCount и не допустил использования ни одной из них за
пределами циклов, где они объявлялись.
Как это часто бывает с наиболее эзотерическими свойствами
языка, реализации компиляторов могут различаться.
Насколько длинным может быть цикл?
Длина цикла может измеряться в строках кода или глубине
вложенности.
Делайте циклы достаточно короткими, чтобы их можно было
увидеть сразу целиком Если вы обычно смотрите на циклы на
вашем мониторе, а ваш монитор показывает 50 строк, то
установите 50-строчное ограничение длины. Эксперты предложили
ограничивать длину цикла одной страницей. Однако когда вы
оцените преимущество создания простого кода, вы редко будете
писать циклы длиннее 15 или 20 строк.
Ограничивайте вложенность тремя уровнями Иссле-
дования показали, что способность программистов разоб- нии
^"""hoc(tm) си. ш раться в цикле существенно снижается, если
уровень вложенности превышает три уровня (Yourdon, 1986а).
Если вам нужно большее число уровней, сделайте цикл короче
(концептуально), вынеся его часть в отдельный метод или
упростив управляющую структуру.
Выделяйте внутреннюю часть длинных циклов в отдельные методы
Если цикл хорошо спроектирован, то код внутри него часто можно
выделить в один или несколько методов, которые будут
вызываться из цикла.
Делайте длинные циклы особенно ясными Длина увеличивает
сложность. Если вы пишете короткий цикл, вы можете
использовать более рискованные управляющие структуры, такие
как break и continue, множественные выходы, сложные условия
завершения и т.д. Если вы пишете более длинный цикл и
проявляете хоть какую-то заботу о читателях, вы предусмотрите
в цикле только один выход и сделаете условие выхода
исключительно понятным.
378 ЧАСТЬ IV Операторы
16.3. Простое создание цикла - изнутри наружу
Если у вас иногда возникают затруднения при кодировании
сложного цикла (что бывает у большинства программистов), есть
простой способ реализовать его с первого раза. Вот как это
сделать. Начните с одного действия. Закодируйте его с помощью
констант. Затем сделайте отступ, окружите его циклом и
замените константы индексами цикла или вычисляемыми
выражениями. Добавьте еще один цикл, если он нужен, и замените
другие константы. Повторите процесс нужное число раз. После
этого добавьте код инициализации. Так как вы начали с одного
действия и двигались в сторону его обобщения, то можете
рассматривать этот процесс как кодирование изнутри наружу.
Перекрестная ссылка Кодирова- Д°ПУСТИМ. вы разрабатываете
программу для страховой
пт цйш изнутри наружу лохо- компании. Ставки для страхования
жизни варьируются в
же на ППП (см. главу 9). зависимости от возраста и пола
страхователя. Ваша задача
- написать метод, вычисляющий общую страховую
Предыдущая << 1 .. 183 184 185 186 187 188 < 189 > 190 191 192 193 194 195 .. 426 >> Следующая