Don't Use Java Assertions

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

В Java существует два основных способа проверки ситуации и выдачи сообщения о неожиданном событии. Это либо исключение, либо утверждение. Технически они почти одинаковы, но есть некоторые небольшие различия. Я считаю, что исключения - это правильный путь во всех ситуациях, и утверждения не должны использоваться. Вот почему.

Посмотрим, что происходит, когда происходит срабатывание утверждения. Предположим, что это наш код:

Сохраните этот код в Main.java и скомпилируйте:

Then run it:

$ java Main
Hello, world!

Утверждение не было вызвано. Оно было проигнорировано. Теперь запустите его с флагом -enableassertions.

Это первое отличие между исключениями и утверждениями. Исключения всегда будут выбрасываться, тогда как утверждения не включены по умолчанию. Они предполагаются включенными во время тестирования и выключенными в производстве. Утверждение вызывает исключение времени выполнения AssertionError. Но подождите; это не RuntimeException. Оно наследуется от класса Error, который наследуется от Throwable. Это второе отличие. Я не знаю о каких-либо других отличиях.

Я бы рекомендовал не использовать утверждения … никогда. Просто потому, что я сильно верю в подход “Fail Fast”. Я считаю, что ошибки должны быть видимыми не только во время тестирования, но и в производстве. Более того, я считаю, что сделать ошибки видимыми в производстве очень важно, если вы хотите достичь высококачественного продукта.

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

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 13:32

sixnines availability badge   GitHub stars