Как перестать засорять ваш код с помощью Optional IsPresent ()? - PullRequest
0 голосов
/ 22 апреля 2020

Так что я все использую isPresent вместо использования == null, чтобы проверить, был ли объект возвращен успешно, но я чувствую, что попал в яму засорения своего кода с помощью isPresent.

Итак, допустим, у меня есть несколько разных конечных точек для извлечения или обновления модели. Я бы не хотел, чтобы isPresent в начале каждой из них проверял, существует ли этот объект с самого начала!

Пример:

    Optional<Object> myObject = objectRegistry.get(name);
    if (myObject.isPresent()) {
        doSomething();
    } else {
        throw new ObjectNotFoundException(stampName);
    } 

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

1 Ответ

6 голосов
/ 22 апреля 2020

Я бы не хотел, чтобы isPresent присутствовал в начале каждой из них, проверяя, существует ли этот объект с самого начала!

Проверка необходима, потому что вы вызываете исключение, если он отсутствует.

// note how this opposite check reduces the nestedness 
// and simplifies the flow
if (!myObject.isPresent()) {
    throw new ObjectNotFoundException(stampName);
}

final Object o = myObject.get();
// carry on with 'o'

, что с Java8 будет

final Object o = myObject.orElseThrow(() -> new ObjectNotFoundException(stampName));
// carry on with 'o'

Это уменьшит код до одной строки, которую вы можете переместить на метод шаблона .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...