我正在尝试将一个对象映射到另一个对象,并且我在确定最佳练习是什么是检查对象是否要映射的对象是null
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;
}
¿关于这样做的最佳实践是什么?
显然,这归结为样式,因此没有硬规则告诉我们哪个版本是"最佳"。如果您的团队编写的所有代码遵循方案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)
。
和记录:当您进行"硬核"干净代码时,该方法最终会读取:
if (in == null)
return null;
return createDocumentFrom(in);
或类似的东西。含义:您将实际创建并将结果对象配置为自己的私有方法的代码。而且该方法不必担心传递的零参数!
最后:理想解决方案无需担心无效参数。仅仅因为您避免了像瘟疫一样的空。并非总是可能的,但总是可取的!
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;
}