Как передать параметры в функцию, выполнив проверки - PullRequest
0 голосов
/ 06 января 2019

Я новичок в разработке для Android (Java) и наткнулся на код, который мне не очень нравится. Может ли кто-нибудь помочь мне и сказать, есть ли , есть ли более элегантный способ передать требуемые параметры в функцию и с меньшим количеством проверок объекта , чем тот, который упомянут ниже?

Обратите внимание, что для каждого параметра существует несколько проверок существования данного объекта. И хуже всего то, что многократные проверки повторяются.

DAO.inserirEvento(db, uuid_evento.toString(), enco_id,
                evento.getTipo(),
                evento.getStatus(),
                dataCompleta,
                evento.getHora(),
                evento.getCriacao(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getCodigo(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getCep(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getLogradouro(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getNumero(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getLocalidade(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getUf(),
                evento.getDestino() == null ? null : evento.getDestino().get(0) == null ? null : evento.getDestino().get(0).getEndereco() == null ? null : evento.getDestino().get(0).getEndereco().getBairro());

1 Ответ

0 голосов
/ 06 января 2019

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

Optional.ofNullable(evento.getDestino())
        .map(d -> d.get(0))
        .map(d -> d.getEndereco())
        .map(e -> e.getCodigo())
        .orElse(null)

Каждая из этих Optional будет пустой, если какая-либо из функций вернет null.

Кроме того, учитывая, что getCodgio() является единственной изменяющейся строкой, вы можете извлечь все, вплоть до d.getEndereco(), в локальный Optional<Endereco> (или любой другой тип), чтобы уменьшить количество повторений.

(Примечание: предполагается, что evento.getDestino() не может быть пустым списком.)

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