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

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

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

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

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

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

Макконнелл С. Совершенный код. Мастер-класс — М.: Русская редакция, 2005. — 896 c.
ISBN: 5-469-00822-3
Скачать (прямая ссылка): soversheniykodmasterklass2005.djvu
Предыдущая << 1 .. 97 98 99 100 101 102 < 103 > 104 105 106 107 108 109 .. 426 >> Следующая

Общие принципы использования утверждений
Далее перечислены общие положения по применению утверждений.
Используйте процедуры обработки ошибок для ожидаемых событий и
утверждения для событий, которые происходить не должны
Утверждения проверяют условия событий, которые никогда не
должны происходить. Обработчик ошибок проверяет внештатные
события, которые могут и не происходить слишком часто, но были
предусмотрены писавшим код программистом и должны обрабаты-
ваться и в промышленной версии. Обработчик ошибок обычно
проверяет некорректные входные данные, утверждения - ошибки в
программе.
Если для обработки аномальной ситуации служит обработчик
ошибок, он позволит программе адекватно отреагировать на
ошибку. Если же в случае аномальной ситуации сработало
утверждение, для исправления просто отреагировать на ошибку
мало - необходимо изменить исходный код программы,
перекомпилировать и выпустить новую версию ПО.
Будет правильно рассматривать утверждения как выполняемую
документацию - работать программу с их помощью вы не
заставите, но вы можете документировать допущения в коде более
активно, чем это делают комментарии языка программирования.
Старайтесь не помещать выполняемый код в утверждения Если в
утверждении содержится код, возникает возможность удаления
этого кода компилятором при отключении утверждений. Допустим,
у вас есть следующее утверждение:
ГЛАВА 8 Защитное программирование 187
Пример опасного использования утверждения (Visual Basic)
Debug.Assert( PerformAction() ) ' Невозможно выполнить
действие.
Проблема здесь в том, что, если вы не компилируете утвер-
ждения, вы не компилируете и код, который выполняет указанное
действие. Вместо этого поместите выполняемые выражения в
отдельных строках, присвойте результаты статусным переменным и
проверяйте значения этих переменных. Вот пример безопасного
использования утверждения:
Пример безопасного использования утверждения (Visual Basic)
actionPerformed = PerformAction()
Debug.Assert( actionPerformed ) ' Невозможно выполнить
действие.
Используйте утверждения для документирования и дццццш^т т ц
щцциип П iijin
проверки предусловий и постусловий Предусловия и дусяовиях и
постусловиях см.
постусловия - это часть подхода к проектированию и раз-
"Object-Oriented
Software Const*
работке программ, известному как "проектирование по кон-
ruction* (Meyer, Ш7),
тракту" (Meyer, 1997). При использовании пред- и постусловий
каждый метод или класс заключает контракт с остальной частью
программы.
Предусловия - это соглашения, которые клиентский код,
вызывающий метод или класс, обещает выполнить до вызова метода
или создания экземпляра объекта. Предусловия - это
обязательства клиентского кода перед кодом, который он
вызывает.
Постусловия - это соглашения, которые метод или класс обещает
выполнить при завершении своей работы. Постусловия - это
обязательства метода или класса перед кодом, который их
использует.
Утверждения - удобный инструмент для документирования пред- и
постусловий.
С этой целью можно использовать и комментарии, но в отличие от
них утверждения могут динамически проверять, выполняются ли
пред- и постусловия.
В следующем примере утверждения документируют пред- и
постусловия в функции Velocity:
Пример использования утверждений для документирования пред- и
постусловий (Visual Basic)
Private Function Velocity (
ByVal latitude As Single,
ByVal longitude As Single,
ByVal elevation As Single ) As Single
' Предусловия
Debug.Assert ( -90 <= latitude And latitude <= 90 )
Debug.Assert ( 0 <= longitude And longitude < 360 )
Debug.Assert ( -500 <= elevation And elevation <= 75000 )
Перекрестная ссылка Можете рассматривать атот случай как одну
из многих проблем, связанных с размещением нескольких
операторов на одно! строке. Другие примеры ш. в подразделе
"Размещение одного одоратора на строке" раздела 31.5.
188
ЧАСТЬ II Высококачественный код
' Постусловия
Debug.Assert ( 0 <= returnVelocity And returnVelocity <= 600
)
' Возвращаемое значение
Velocity = returnVelocity End Function
Если бы переменные latitude, longitude и elevation поступили
из внешнего источника, корректность их значений должна была
быть проверена и обработана в коде обработчика ошибок, а не с
помощью утверждений. Но если эти переменные поступили из
доверенного внутреннего источника, а метод спроектирован в
предположении, что их значения будут в разрешенном интервале,
то применение утверждений допустимо.
Перекрестная ссыло 06 устой Д*я б(ХГ1Ьшей устойчивости кода
проверяйте утвер
чивости см. "Устойчивость про- ждения, а затем все равно
обработайте возможные
тив корректности" раздел 8.3* ошибки Каждая потенциально
ошибочная ситуация обыч
но проверяется или утверждением, или кодом обработчика
ошибок, но не тем и другим вместе. Некоторые эксперты
утверждают, что необходим только один тип проверки (Meyer,
1997).
Однако реальные программы и проекты бывают слишком
Предыдущая << 1 .. 97 98 99 100 101 102 < 103 > 104 105 106 107 108 109 .. 426 >> Следующая