04
Защитное программирование. Как правильно использовать утверждения
Категория: Культура кода Автор: Александр Никитин Опубликовано: 04-03-2010
Метки: защитное программирование
Сегодня поговорим об использовании утверждений. Утверждения (assertion) – это код (метод или макрос), с помощью которого проверяется правильность заданного условия. Обычно утверждение использует два аргумента – логическое выражение для проверки и сообщение, которое должно выводиться пользователю в случае ошибки.
Вот пример утверждения на языке Java:
assert value != 0 : "value is equal to 0";
Утверждения не предназначены для использования в промышленных версиях программ. В основном они используются для отладки при разработке и поддержке ПО. При сборке промышленной версии программы утверждения обычно удаляют. Главная задача утверждений – выявить противоречивые допущения, некорректные значения и условия в ходе разработки программы.
Общие принципы использования утверждений
Для ожидаемых событий используйте собственные процедуры обработки ошибок. Утверждения применяйте для событий, которые никогда не должны произойти.
Обработчик ошибок в программе должен проверять некорректные входные данные из внешних источников, предусмотренные программистом, в то время, как утверждения – ошибки в самой программе.
Отработка предусмотренного обработчика – это штатная ситуация. Отработка утверждения – признак неверной работы программы и необходимости внесения изменений в её исходный код.
Не помещайте исполняемый код в утверждения.
В некоторых компиляторах есть опции отключения исполнения утверждений. А если не компилируется код утверждений, то возникает опасность неверной работы программы, в случае если исполнение этого кода влияет на дальнейшую логику программы.
Используйте утверждения для проверки предусловий и постусловий условий.
Предусловия – это набор требований, которые должны выполняться до вызова метода/создания экземпляра класса и т.п.
Постусловия – это набор требований, которые должны выполняться после отработки метода.
Утверждениями удобно документировать пред- и постусловия. Но стоит помнить, что проверке подлежат данные, которые поступают из внутреннего кода, а не из внешних источников. Для обработки некорректного внешнего ввода должны быть предусмотрены отдельные функции. Когда же корректность проверяется у параметров, поступивших от доверенного внутреннего источника, следует использовать утверждения.






Вот пример утверждения на языке Java:
При чому тут JAVA???це PHP за 2 неділі а не JAVA!
Володя, це Школа Программирования. PHP за 2 недели – отдельный курс в рамках этого проекта.
В PHP тоже есть утверждения – функция assert(). Подробней читай тут
Хм. Никогда не слышал об утверждениях. Спасибо. Попробую использовать.
Вы не могли бы дать еще несколько примеров, где можно применять assert(). Не очень понятна область применения