Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
03 Окт 2023
2 мин
207

Использование Java 8 Optional в качестве аргументов метода

Пройдите тест, узнайте какой профессии подходите

Java 8 представила класс Optional, который используется для представления наличия или отсутствия значения. Это стало полезным инструментом для решения

Java 8 представила класс Optional, который используется для представления наличия или отсутствия значения. Это стало полезным инструментом для решения проблемы NullPointerException, предоставляя явное представление о том, что значение может отсутствовать. Однако существует общепринятое мнение, что использовать Optional в качестве аргументов метода не рекомендуется.

Давайте рассмотрим пример. У нас есть метод, который принимает два параметра, оба из которых могут быть необязательными. Использование Optional в качестве аргумента метода могло бы выглядеть так:

public int calculateSomething(Optional<String> p1, Optional<BigDecimal> p2) {
    // my logic
}

Впервые увидев это, кажется, что это отличное решение. Оно ясно указывает, что параметры могут отсутствовать. Однако есть несколько причин, по которым это может быть плохой идеей.

Во-первых, использование Optional в качестве аргумента метода может привести к избыточности и сложности кода. Если значение аргумента может быть null, это должно быть ясно указано в документации метода. Если разработчик забыл проверить на null перед передачей значения в метод, Optional не поможет избежать ошибки NullPointerException.

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

В-третьих, использование Optional в качестве аргумента метода может привести к ненужным проверкам на наличие значения. Если метод может корректно обрабатывать null значения, нет необходимости в дополнительной проверке на наличие значения Optional.

Вместо использования Optional в качестве аргументов метода, рекомендуется использовать перегрузку методов или паттерн проектирования Builder для создания более ясного и понятного API. Правильное использование Optional поможет создать более чистый и безопасный код.

Добавить комментарий