Я видел этот вопрос, но у меня есть еще несколько вопросов об использовании assert
ключевого слова. Я спорил с несколькими другими программистами об использовании assert
. Для этого варианта использования был метод, который может возвращать нуль, если выполнены определенные предварительные условия. Код, который я написал, вызывает метод, затем утверждает, что он не возвращает ноль, и продолжает использовать возвращенный объект.
Пример:
class CustomObject {
private Object object;
@Nullable
public Object getObject() {
return (object == null) ? generateObject() : object;
}
}
Теперь представьте, что я использую это так:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
assert object != null;
// Do stuff using object, which would throw a NPE if object is null.
}
Мне сказали, что я должен удалить то assert
, что они никогда не должны использоваться в производственном коде, только для тестирования. Это правда?
Objects.requireNonNull
в Java 8).
-ea
или эквивалентный.