#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 может помочь сделать код лучше. И еще раз - это холивар, четкого и однозначного ответа нет.
Комментариев нет:
Отправить комментарий