В следующей статье про Optional такое резюме:
не загрязняйте свой код использованием везде Optional, используйте
их осторожно, где это имеет смысл (don't pollute your code with
Optional everywhere, use them carefully where it makes sense).
А где имеет смысл использовать Optional? Есть ли чёткое разделение (или хотя бы какие-нибудь рекомендации), когда лучше использовать if-else, а когда Optional?
Ответ
Прежде всего, все разговоры об Optional - это холивар. Однако есть ряд следствий:
Правильное использование Optional упрощает контракт в приложении, когда разработчик библиотеки явно показывает, какие поля могут быть null. А разработчик конечного приложения явно видит, где необходимо сделать проверки, а где можно обойтись без них. Тут важны ключевые слова правильное использование и явно видит. В реальности сама переменная типа Optional<*> может быть null'ом.
Работа с Optional ударяет по производительности, так как может потребовать выделение в куче дополнительных объектов - самих классов Optional, лябд. Заодно увеличивается вероятность боксинга примитивных значений.
При работе с Optional'ами увеличивается объем кода.
Из всего этого есть важные следствия:
Вопросы об Optional ближе к вопросам о Code Review, о Style Guide. При правильном подходе код будет более чистый, при неправильном - всё станет только хуже.
Для JVM класс Optional не оказывает положительного эффекта, однако может оказать отрицательный.
Если вам надежность важнее скорости (например, нагрузка не такая большая, а данные серьезные), то Optional может помочь сделать код лучше.
И еще раз - это холивар, четкого и однозначного ответа нет.
Комментариев нет:
Отправить комментарий