Является ли утверждение Groovy хорошей идеей для производственного кода, в отличие от утверждения Java? - PullRequest
19 голосов
/ 10 ноября 2011

В Java известно, что использование ключевого слова assert обычно является плохой идеей, поскольку его поведение зависит от среды выполнения (по умолчанию оно ничего не делает, если -enableassertion не передается среде выполнения java) .

Отличен ли Groovy? Всегда ли он выполняется в рабочем коде и рекомендуется ли его использовать в рабочем коде? (В Java вы должны использовать что-то вроде Предварительные условия )

Из моих тестов работоспособности кажется, что по умолчанию assert работает хорошо без каких-либо флагов, и что это на самом деле намного мощнее, чем ключевое слово Java (см. Power Assert ) - я просто ищу официальный / полный ответ, в отличие от моего анекдотического.

1 Ответ

22 голосов
/ 10 ноября 2011

Groovy assert всегда выполняется в производственном коде, и я рекомендовал использовать в производственном. Я считаю, что следующее примерно эквивалентно, но версия Groovy более компактна

Groovy

assert file.exists(), "$file does not exist"

Java

if (!file.exists()) {
    throw new SomeRuntimeException(file + " does not exist");
}
...