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

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

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

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

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

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

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 204 205 206 207 208 209 < 210 > 211 212 213 214 215 216 .. 426 >> Следующая

Улучшенные примеры неявных проверок True или False (Visual
Basic)
Dim printerError As Boolean Dim reportSelected As ReportType
Dim summarySelected As Boolean
If ( Not printerError ) Then InitializePrinter()
If ( printerError ) Then NotifyUserOfError()
If ( reportSelected = ReportType_First ) Then PrintReport()
If ( summarySelected ) Then PrintSummary()
If ( Not printerError ) Then CleanupPrinter()
ffepftXfустная ссылка 0 mm- Если ваш язык не п°ДДеРживает логические
переменные и
нет переменных см. раздел вам приходится их эмулировать, то,
вероятно, вы не смо-
12Л. жете использовать эту технологию, поскольку
искусствен
ные true и false не всегда могут проверяться в таких выра-
жениях, как while ( not done ).
ГЛАВА 19 Общие вопросы управления
427
Упрощение сложных выражений
Вы можете предпринять несколько описанных далее шагов для
упрощения сложных выражений.
Разбивайте сложные проверки на части с помощью новых
логических переменных Вместо создания чудовищных условий с
полудюжиной элементов присвойте значения этих элементов
промежуточным переменным, что позволит выполнять упрощенную
проверку.
Размещайте сложные выражения в логических функциях Если какая-
то проверка выполняется неоднократно или отвлекает от
основного хода алгоритма программы, поместите ее код в
отдельную функцию и проверяйте значение этой функции. Вот
пример сложного условия:
Пример проверки сложного условия (Visual Basic)
If ( ( document.AtEndOfStream ) And ( Not inputError ) ) And
( ( MIN_LINES <= lineCount ) And ( lineCount <= MAX_LINES ) )
And ( Not ErrorProcessing( ) ) Then ' Делаем то или иное.
End If
Это условие выглядит ужасно, и вам приходится его читать, даже
если оно вам неинтересно. Поместив его в логическую функцию,
вы сможете изолировать эту проверку и позволите читателю
забыть о ней, пока она не понадобится. Вот как можно поместить
условие if в функцию:
Пример сложного условия, помещенного в логическую функцию и
использующего для ясности новые промежуточные переменные
(Visual Basic)
Function DocumentIsValid(
ByRef documentToCheck As Document, lineCount As Integer,
inputError As Boolean ) As Boolean
Dim allDataRead As Boolean Dim legalLineCount As Boolean
I- Промежуточные переменные добавлены для упрощения проверки в
самой последней строке.
*->Г allDataRead = ( documentToCheck.AtEndOfStream ) And ( Not
inputError )
legalLineCount = ( MIN_LINES <= lineCount ) And ( lineCount <=
MAX_LINES ) DocumentlsValid = allDataRead And legalLineCount
And ( Not ErrorProcessing() )
End Function
Здесь предполагается, что ErrorProcessingQ - это некоторая
логическая функция, определяющая текущее состояние обработки
документа. Теперь, когда вы читаете основной ход алгоритма,
вам не надо разбираться со сложным условием:
Перекрестная ссылка 0 методике использования промежуточных
переменных для прояснения логических проверок см. подраздел
"Используйте логические переменные для документирования
программы" раздела 12.5.
15-403
428 ЧАСТЬ IV Операторы
Пример основного хода алгоритма, не содержащего сложное
условие (Visual Basic)
If ( DocumentIsValid( document, lineCount, inputError ) ) Then
1 Делаем то или иное.
ную, хорошо названную функцию улучшит читабельность кода и
упрос тит понимание того, что этот код делает. Это достаточная
причина для создания функции. Имя нового метода привносит в
программу абстракцию, которая документирует назначение
проверки прямо в коде. Это даже лучше, чем документирование
условия с помощью комментариев, потому что код будет читаться
и модифицироваться с большей вероятностью, чем комментарии.
Яеродшюм ссылка Об ис~ Используйте таблицы решений для замены
сложных
пользовании таблиц для заме- условий Иногда нужно проверять
сложные условия, совы сложной логики см. главу 1В. держащие
несколько переменных. В этом случае для выпол-
операторы if или case. Таблицу решений изначально проще
кодировать - она требует пары строк кода и никаких изощренных
управляющих структур. Такая минимизация сложности уменьшает
возможность ошибок. При изменении данных вы можете изменить
таблицу решений, не меняя код: вам всего лишь надо обновить
содержимое структуры данных.
Гтер Gmacon *
{iHomer Simpscft) имеют трудности с пониманием большого
количества отрицаний. Вы можете предпринять какие-то действия,
чтобы избежать кодирования сложных отрицательных логических
выражений в программе.
В операторах if заменяйте негативные выражения позитивными,
меняя местами блоки if и else Вот пример негативного условия:
Пример сбивающего с толку отрицательного логического условия
(Java)
г- Здесь оператор отрицания.
>->if ( ! statusOK ) {
// Делаем что-то.
End If

Если вы проверяете условие только раз, вам может показаться,
что его не стоит помещать в отдельный метод. Но вынесение
условия в отдель-
нения проверки удобней применять таблицы решений, а не
Составление позитивных логических выражений
Я не не нетулой.
Предыдущая << 1 .. 204 205 206 207 208 209 < 210 > 211 212 213 214 215 216 .. 426 >> Следующая