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

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

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

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

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

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

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

ность вместо кода ли. Это сообщение об ошибке
предназначено скорее вам, а
глубокой вложенности. 06 этой не пользователю, так что
сформулируйте его соответственно.
методике см, раздел 19.4. Вот как модифицировать пример
классификации символов
для выполнения проверки "других вариантов":
Пример использования варианта по умолчанию для перехвата
ошибок (C++)
if ( IsLetter( inputCharacter ) ) {
characterType = CharacterType_Letter;
}
else if ( IsPunctuation( inputCharacter ) ) { characterType =
CharacterType_Punctuation;
}
else if ( IsDigit( inputCharacter ) ) { characterType =
CharacterType_Digit;
}
else if ( IsControl( inputCharacter ) ) {
characterType = CharacterType_ControlCharacter;
}
else {
DisplayInternalError( "Unexpected type of character detected."
);
Замените последовательности if-then-else другими
конструкциями, которые поддерживает ваги язык
программирования Некоторые языки, скажем, Microsoft Visual
Basic и Ada, предоставляют операторы case, поддерживающие
строки, перечисления и логические функции. Используйте их -
они проще в написании и чтении, чем цепочки if-then-else.
Код классификации типов символов, написанный на Visual Basic
с помощью оператора case, может выглядеть так:
Пример использования оператора case вместо последовательности
if-then-else (Visual Basic)
Select Case inputCharacter Case "a" To "z"
characterType = CharacterType_Letter
ГЛАВА 15 Условные операторы 353
Case " ", ", ", ". ", "! ", "(", ")", ":
characterType = CharacterType_Punctuation Case "0" To "9"
characterType = CharacterType_Digit Case
FIRST_CONTROL_CHARACTER To LAST_CONTROL_CHARACTER
characterType = CharacterType_Control Case Else
DisplayInternalError( "Unexpected type of character
detected." )
End Select
15.2. Операторы case
Оператор case или switch - конструкция, сильно варьирующаяся
от языка к языку C++ и Java поддерживают case только для
порядковых типов, рассматривая по одному значению за раз.
Visual Basic поддерживает case для порядковых типов и
предоставляет мощные средства для обозначения диапазонов и
комбинаций значений. Многие языки сценариев вообще не
поддерживают case.
Следующие разделы представляют основные принципы эффективного
использования операторов case.
Выбор наиболее эффективного порядка вариантов
Организовать порядок следования вариантов в операторе case
можно по-разному. Если выражение case невелико и содержит
только три варианта и три соответствующих строки кода, то
выбранный порядок большого значения не имеет. Однако в случае
длинного оператора case (скажем, обрабатывающего десятки
различных событий в программе, управляемой событиями) порядок
следования достаточно важен. Давайте рассмотрим способы
упорядочения.
Упорядочивайте варианты по алфавиту или численно Если все
варианты равнозначны, их размещение в алфавитном порядке
улучшает читабельность.
В этом случае нужный вариант легко выбрать из группы.
Поместите правильный вариант первым Если у вас есть один
корректный вариант и несколько исключений, поместите
правильное значение первым. Отметьте в комментариях, что этот
вариант является нормальным, а все остальные
- исключительными.
Отсортируйте варианты по частоте Поместите наиболее часто
встречающиеся случаи в начало, а более редкие - в конец
списка. Этот подход имеет два преимущества. Первое: читатели
легко обнаружат ситуации, встречающиеся чаще всего. Второе:
при сканировании списка в поисках определенных значений скорее
всего будут требоваться наиболее часто встречающиеся варианты,
поэтому их размещение в начале кода сделает поиск быстрее.
Советы по использованию операторов case
Далее перечислены советы по применению операторов case.
Перекрестная ссылка Другие
Сделайте обработку каждого варианта простой стт по упрощению
кода см. Код, связанный с каждым вариантом, должен быть корот-
в главе 24.
354 ЧАСТЬ IV Операторы
ким. Краткость позволяет сделать структуру оператора case
прозрачнее. Если действия, предпринимаемые для какого-то
варианта слишком сложны, напишите метод и вызывайте его, а не
размещайте весь этот код прямо в блоке case.
Не конструируйте искусственные переменные с целью получить
возможность использовать оператор case Оператор case следует
применять для простых данных, которые легко разбить на
категории. Если ваши данные нельзя назвать простыми,
используйте цепочки if-tben-else. Фальшивые переменные сбивают
с толки, и их следует избегать. Например, не делайте так:
Ш Пример создания искусственной переменной для оператора case
- плохая практика (Java)
action = userCommand[ 0 ]; switch ( action ) { case 'c':
Copy(); break; case 'd':
DeleteCharacter(); break; case 'f':
FormatO; break; case ' IV :
Help();
break;
default:
HandleUserInputError( ErrorType.InvalidUserCommand );
Переменная action управляет оператором case. В данном случае
action конструируется с помощью первого символа строки
userCommand, которая вводится пользователем.
Предыдущая << 1 .. 173 174 175 176 177 178 < 179 > 180 181 182 183 184 185 .. 426 >> Следующая