во время разработки и развертывания поведение утверждений - PullRequest
0 голосов
/ 23 марта 2011

может объяснить значение выражения «утверждения позволяют вам проверять свои предположения во время разработки, но код утверждения в основном испаряется при развертывании программы, не оставляя никаких служебных или отладочных кодов для отслеживания и удаления»

Ответы [ 3 ]

4 голосов
/ 23 марта 2011

РЕДАКТИРОВАТЬ: утверждения должны использоваться для обнаружения ошибок кодирования, а не ошибок ввода.

Они позволяют документировать допущения, сделанные при кодировании, способом, который можно применять при включении утверждений.Однако эти проверки не требуются хорошо протестированной программе после выпуска.

Они не подходят для проверки пользовательского ввода, поскольку они не предназначены для удобства и предполагают единственный способ исправить ошибочное утверждение.это исправить код (часто убивая или отключая программу в процессе)

Для проверки пользовательского ввода лучше использовать if(!condition) friendly_user_message().


утверждения позволяют выполнятьдорогие тесты, которые вы хотите отключить для производства cocde.

JVM оптимизирует утверждения, когда они не включены.

РЕДАКТИРОВАТЬ: у вас может быть сложная проверка, которую вы хотите выполнить, если включены подтверждения.Это можно сделать двумя способами:

boolean debug = false;
assert debug = true;

if (debug) // do something.

ИЛИ

assert validate();

// later
private boolean validate() {

     return passed;
}
2 голосов
/ 23 марта 2011

Как правило, это означает, что поскольку утверждения являются инструментом разработки, а вы разрабатываете, вы можете запускать виртуальную машину с ключами -enableassertions или -ea, которые будут выполнять ваши утверждения во время выполнения, это утверждение «позволяет» проверять ваши предположения во время разработки. «часть заявления.

Я предполагаю, что в контексте того, что вы читаете, «развертывание» (возможно, производство?) Означает, что виртуальная машина запускается без -enableassertions или -ea, которые не будут запускать ваши утверждения (они просто пропустят их) таким образом, «не оставляя никаких служебных или отладочных кодов для отслеживания и удаления».

0 голосов
/ 23 марта 2011

Утверждения в java включаются указанием переключателя -enableassertions или -ea при запуске программы. В противном случае все ваши операторы assert будут игнорироваться. Справа здесь у вас есть ссылка с учебником утверждений. Надеюсь помочь.

...