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

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

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

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

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

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

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

выражений т. раздел Ш1.
Рассмотрите вопрос использования блока else Если вы считаете,
что вам нужен простой оператор if подумайте, может, вам на
самом деле нужен вариант с if-then-else. Классический анализ
General Motors показал, что в 50-80% случаев использования
операторов //следовало применять и оператор else (Elshoff,
1976).
Одна из причин добавления блока else - даже пустого - в том,
чтобы продемонстрировать, что вариант с else был учтен.
Конечно, кодирование пустых выражений в else просто для того,
чтобы показать, что этот вариант рассмотрен, может
350 ЧАСТЬ IV Операторы
быть преувеличением, но хотя бы принимайте вариант с else во
внимание. Если вы задаете ^-проверку, не имеющую блока else,
то, кроме очевидных случаев, пишите в комментариях объяснение,
почему else отсутствует, скажем, так:
Пример полезного, прокомментированного блока else (Java)
// Если цвет задан корректно.
if ( C0L0R_MIN <= color && color <= COLOR.MAX ) {
// Делаем что-то
}
else {
// Иначе цвет задан некорректно.
// Вывод на экран не выполняется -- просто игнорируем команду.
>
Проверяйте корректность выражения else При тестировании кода
вы можете решить, что достаточно проверить основной блок if и
все. Однако, если можно проверить вариант в else, не забудьте
это сделать.
Проверяйте возможную перестановку блоков if и else Частая
ошибка при программировании выражений if-then состоит в
размещении кода из блока if в блоке else, т. е. инвертировании
логики выражения if Проверяйте ваш код на наличие этой ошибки.
Последовательности операторов if-then-else
Если язык не поддерживает операторы case или поддерживает их
только частично, вам часто придется писать последовательные
проверки if-then-else. К примеру, код распределения символов
по категориям, может выглядеть в виде такой цепочки:
Мрмиекм "смм" 06 уяро- Пример использования последовательности
цеш сложных выражений си. if-then-else для распределения
символов раздел 19-1- по категориям (C++)
if ( inputCharacter < SPACE ) {
characterType = CharacterType_ControlCharacter;
}
else if (
inputCharacter == ' ' | | inputCharacter == ',' 11
inputCharacter == '.' 11 inputCharacter == '!' 11
inputCharacter == ' (' II inputCharacter == ')' 11
inputCharacter ' ' 11 inputCharacter " '' 11 inputCharacter ==
'?' || inputCharacter == '
) {
characterType = CharacterType_Punctuation;
ГЛАВА 15 Условные операторы 351
else if ( '0' <= inputCharacter && inputCharacter <= '9' ) {
characterType = CharacterType_Digit;
}
else if (
( 'a' <= inputCharacter && inputCharacter <= 'z' ) ||
( 'A' <= inputCharacter && inputCharacter <= 'Z' )
) {
characterType = CharacterType_Letter;
}
Учитывайте советы, приведенные далее, при написании
последовательных if-then-else.
Упрощайте сложные проверки с помощью вызовов логических
функций
Одна из причин, по которой код из предыдущего примера сложно
читать, в том, что проверки категорий символов довольно
сложны. Для улучшения читабельности вы можете заменить их
вызовами функций, возвращающих логические значения. Вот как
этот пример может выглядеть после замены условий логическими
функциями:
Пример последовательности If-then-else, использующей вызовы
логических функций (C++)
if ( IsControl( inputCharacter ) ) {
characterType = CharacterType_ControlCharacter;
}
else if ( IsPunctuation( inputCharacter ) ) { characterType =
CharacterType_Punctuation;
}
else if ( IsDigit( inputCharacter ) ) { characterType =
CharacterType_Digit;
}
else if ( IsLetter( inputCharacter ) ) { characterType =
CharacterType_Letter;
>
Размещайте наиболее вероятные варианты раньше остальных Помес-
тив в начало наиболее часто встречающиеся ситуации, вы
минимизируете то количество кода, обрабатывающего
исключительные случаи, которое придется прочитать при поиске
обычных вариантов. Вы увеличите эффективность, потому что
уменьшите число проверок, выполняемых кодом в большинстве
случаев. В приведенном примере буквы обычно встречаются чаще,
чем знаки пунктуации, но проверка этих знаков написана первой.
Вот как исправить код, чтобы буквы проверялись в первую
очередь:
Пример проверки прежде всего наиболее часто встречающихся
вариантов (C++)
Этот случай встречается чаще других, поэтому проверяем его
первым.
•if ( IsLetter( inputCharacter ) ) {
characterType = CharacterType_Letter;
352 ЧАСТЬ IV Операторы
else if ( IsPunctuation( inputCharacter )
) {
characterType = CharacterType_Punctuation;
}
else if ( IsDigit( inputCharacter ) ) {
characterType = CharacterType_Digit;
}
I Этот случай наиболее редкий, поэтому
проверяем его последним.
4>else if ( IsControl( inputCharacter ) ) {
characterType = CharacterType_ControlCharacter;
Убедитесь, что учтены все варианты Закодируйте в
Перекрестная ссылка Это так- ' , ^ ^ ^
же хороший пример того как последнем блоке else сообщение об
ошибке или утвержде-
использовать последователь- ние, чтобы отловить ситуации,
которые вы не планирова-
Предыдущая << 1 .. 172 173 174 175 176 177 < 178 > 179 180 181 182 183 184 .. 426 >> Следующая