Лучший способ проверить, является ли объект пустым, чтобы подготовиться к отображению - PullRequest
1 голос
/ 03 июля 2019

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

1 -

public DTOIntIdentityDocument mapIdentityDocument(Identitydocument in) {
        if (in == null) {
            return null;
        } else {
            DTOIntIdentityDocument out = new DTOIntIdentityDocument();
            out.setDocumentType(this.mapDocumentTypeÇ(in.getDocumenttype()));
            out.setDocumentNumber(in.getDocumentnumber());
            return out;
        }
    }

2 -

public DTOIntIdentityDocument mapIdentityDocument(Identitydocument in) {
        DTOIntIdentityDocument out = null;

        if (in != null) {
            out = new DTOIntIdentityDocument();
            out.setDocumentType(this.mapDocumentTypeÇ(in.getDocumenttype()));
            out.setDocumentNumber(in.getDocumentnumber());
        }

        return out;
    }

¿Любые идеи о том, как лучше всего это делать?

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

Очевидно, что это сводится к стилю, поэтому нет жестких правил, которые говорят нам, какая версия является «лучшей». Если весь код, который ваша команда пишет, следует схеме 1, то это лучший код для вас.

Сказав это, я предпочитаю простую начальную защиту, за которой следует код, вычисляющий «реальный» результат, например:

 if (in == null) 
     return null;

DTOIntIdentityDocument out = new DTOIntIdentityDocument();
out.setDocumentType(this.mapDocumentTypeÇ(in.getDocumenttype()));
out.setDocumentNumber(in.getDocumentnumber());
return out;

Вы хотите написать код, который легко читать и понимать. В вашей версии один блок else ... который на самом деле не обязательно должен быть в своем собственном блоке с дополнительными отступами. С другой стороны, ваш второй фрагмент использует три разных уровня абстракции: простое присваивание, блок if, простое возвращение. Это определенно «сложнее», чем вариант 1 или модифицированный код, который я использовал выше. Но обратите внимание: у варианта 2 тоже есть свои преимущества. Если вы хотите / должны отслеживать / регистрировать результат этого метода, с опцией 2, вы добавляете один trace(out) прямо перед оператором return.

И для справки: когда вы используете «хардкорный» чистый код, метод, наконец, будет выглядеть так:

if (in == null) 
     return null;

return createDocumentFrom(in);

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

Наконец: идеальное решение не должно беспокоиться о нулевых параметрах. Просто потому, что вы избегаете нуля, как чума. Не всегда возможно, но всегда желательно!

0 голосов
/ 03 июля 2019
if(in != null) 
   mapIdentityDocument(in)

public DTOIntIdentityDocument mapIdentityDocument(Identitydocument in) {
        DTOIntIdentityDocument out = new DTOIntIdentityDocument();
        out.setDocumentType(this.mapDocumentTypeÇ(in.getDocumenttype()));
        out.setDocumentNumber(in.getDocumentnumber());
        return out;

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