怎么写出美观, 简洁的代码?
一,前言:
今天和大家交流的是,怎么让代码能变得更加简洁,美观, 在很多赋值,返回实体中,需要赋值到实体时,见到过很多如下情况, 怎么进行优化呢?
代码一:
private static RegistTime transToRegistTime(RegistTimeDtodto) {
RegistTime registTime = new RegistTime();
registTime.setId(dto.getId());
registTime.setYear(dto.getYear());
registTime.setTermId(dto.getTermId());
registTime.setGradeTypeId(dto.getGradeTypeId());
registTime.setGradeId(dto.getGradeId());
registTime.setSubjectSelect(dto.getSubjectIds());
registTime.setSubjectNames(dto.getSubjectNames());
registTime.setClassLevelId(dto.getClasslevelId());
registTime.setContinueDate(dto.getContinueDate());
registTime.setEmployeeDate(dto.getEmployeeDate());
registTime.setAppDate(dto.getAppOldStudentDate());
registTime.setAppPrepareDate(dto.getAppPrepareDate());
registTime.setOldStudentDate(dto.getOldStudentDate());
registTime.setNewStudentDate(dto.getNewStudentDate());
registTime.setVirtualBeginDate(dto.getVirtualBeginDate());
registTime.setVirtualEndDate(dto.getVirtualEndDate());
registTime.setDeleted(dto.getDeleted());
registTime.setCreaterId(dto.getCreator());
registTime.setCreateDate(dto.getCreateTime());
registTime.setModifyId(dto.getModifier());
registTime.setModifyDate(dto.getModifyTime());
registTime.setOnlineClassNum(dto.getOnlineClassNum());
registTime.setOnLineEndDate(dto.getOnlineEndDate());
registTime.setEndEmployeeDate(dto.getEndEmployeeDate());
registTime.setEmployeeDate(dto.getEmployeeDate());
registTime.setEmployeeClassNum(dto.getEmployeeClassNum());
registTime.setClassType(dto.getClassType());
return registTime;
}
代码二:
private static RegistTimeImportLogtransToImportLog(RegistTimeImportLogDto dto) {
RegistTimeImportLog importLog = new RegistTimeImportLog();
importLog.setId(dto.getId());
importLog.setYear(dto.getYear());
importLog.setTermName(dto.getTermName());
importLog.setGradeName(dto.getGradeName());
importLog.setSubjectName(dto.getSubjectNames());
importLog.setClassLevelName(dto.getClasslevelName());
importLog.setEmployeeDate(dto.getEmployeeDate());
importLog.setContinueDate(dto.getContinueDate());
importLog.setOldStudentDate(dto.getOldStudentDate());
importLog.setNewStudentDate(dto.getNewStudentDate());
importLog.setVirtualBeginDate(dto.getVirtualBeginDate());
importLog.setVirtualEndDate(dto.getVirtualEndDate());
importLog.setOnLineEndDate(dto.getOnlineEndDate());
importLog.setEndEmployeeDate(dto.getEndEmployeeDate());
importLog.setEmployeeClassNum(dto.getEmployeeClassNum());
importLog.setOnlineClassNum(dto.getOnlineClassNum());
importLog.setErrorReason(dto.getErrorReason());
importLog.setCreaterId(dto.getCreator());
importLog.setCreateDate(dto.getCreateTime());
importLog.setAppDate(dto.getAppOldStudentDate());
importLog.setAppPrepareDate(dto.getAppPrepareDate());
importLog.setClassType(dto.getClassType() != null ?String.valueOf(dto.getClassType()) : null);
return importLog;
}
二,问题:
当你写出这么长的代码或看到这么长的代码,有没有想过 spring 早就有相关的方案或硅谷早也有人遇到相同的问题,他们的解决方案吗?
三,解决方案:
事实上答案是非常肯定的. 那怎么解决呢?
用 BeanUtils.copyProperties(), 两个参数是上面的条件资源和目标对象.
所以上面代代码一优化一下结果如下:
代码二优化后如下:
private static RegistTimeImportLogtransToImportLog(RegistTimeImportLogDto dto) {
RegistTimeImportLog importLog = new RegistTimeImportLog();
try {
BeanUtils.copyProperties(dto,importLog);
} catch (IllegalAccessExceptione) {
e.printStackTrace();
} catch (InvocationTargetExceptione) {
e.printStackTrace();
}
return importLog;
}
四,小结:
相比之下, 看了什么感觉?是不是更改之后的方式非常的舒服,太对了, 您不用说了, 我已经知道您也是赞同优化之后的方案, 那就共同学习, 争取写出更高质量的代码,提升效率吧. 愿陪您快乐学习,终生进步.