Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Где имеет смысл использовать Optional?

#java_8 #optional


В следующей статье про Optional такое резюме: 


  не загрязняйте свой код использованием везде Optional, используйте
  их осторожно, где это имеет смысл (don't pollute your code with
  Optional everywhere, use them carefully where it makes sense).


А где имеет смысл использовать Optional? Есть ли чёткое разделение (или хотя бы какие-нибудь
рекомендации), когда лучше использовать if-else, а когда Optional?
    


Ответы

Ответ 1



Прежде всего, все разговоры об Optional - это холивар. Однако есть ряд следствий: Правильное использование Optional упрощает контракт в приложении, когда разработчик библиотеки явно показывает, какие поля могут быть null. А разработчик конечного приложения явно видит, где необходимо сделать проверки, а где можно обойтись без них. Тут важны ключевые слова правильное использование и явно видит. В реальности сама переменная типа Optional<*> может быть null'ом. Работа с Optional ударяет по производительности, так как может потребовать выделение в куче дополнительных объектов - самих классов Optional, лябд. Заодно увеличивается вероятность боксинга примитивных значений. При работе с Optional'ами увеличивается объем кода. Из всего этого есть важные следствия: Вопросы об Optional ближе к вопросам о Code Review, о Style Guide. При правильном подходе код будет более чистый, при неправильном - всё станет только хуже. Для JVM класс Optional не оказывает положительного эффекта, однако может оказать отрицательный. Если вам надежность важнее скорости (например, нагрузка не такая большая, а данные серьезные), то Optional может помочь сделать код лучше. И еще раз - это холивар, четкого и однозначного ответа нет.

Комментариев нет:

Отправить комментарий