Try. Finally. If. Not. Null.

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

Есть очень типичная ошибка в предыдущем сценарии “try/finally” до Java7, которую я продолжаю видеть во многих обзорах кода. Мне просто нужно написать об этом. Java7 представила решение, но оно не решает все ситуации. Иногда нам нужно работать с ненаследуемыми от AutoCloseable ресурсами. Пожалуйста, давайте правильно открывать и закрывать их.

Вот как это выглядит (предполагая, что мы находимся в Java 6):

Я уже писал о null и его зловредной природе. Вот оно снова. Если вы просто следуете правилу “никогда нигде не использовать NULL”, этот код потребует немедленного рефакторинга. Версия, которая будет правильной, будет выглядеть так:

Больше нет null, и это очень чисто. Ведь так?

Бывают ситуации, когда открытие самого ресурса вызывает IOException, и мы не можем поместить его за пределы блока try/catch. В этом случае нам приходится использовать два блока try/catch:

Но никогда не должно быть null!

Присутствие null в Java-коде является явным признаком запаха кода. Что-то не так, если вам нужно использовать null. Единственное место, где присутствие null оправдано, это использование сторонних API или JDK. Они могут иногда возвращать null, потому что… ну, их дизайн плохой. У нас нет другого выбора, кроме как использовать if(x==null). Но это все. Нет других мест, где null приветствуется.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 16:01

sixnines availability badge   GitHub stars