怎么写出美观, 简洁的代码?
怎么写出美观, 简洁的代码?
一,前言:
今天和大家交流的是,怎么让代码能变得更加简洁,美观, 在很多赋值,返回实体中,需要赋值到实体时,见到过很多如下情况, 怎么进行优化呢?
代码一:
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;
}
四,小结:
相比之下, 看了什么感觉?是不是更改之后的方式非常的舒服,太对了, 您不用说了, 我已经知道您也是赞同优化之后的方案, 那就共同学习, 争取写出更高质量的代码,提升效率吧. 愿陪您快乐学习,终生进步.
智能推荐
Configuration, ConfigurationProperties和EnableConfigurationProperties用法
最近刚刚解决了个错误,突然又发现这个类在spring容器中找不到, 于是我就加一个 @Component的注解,哈哈直接启动成功,那我如果吧这个注解去掉,加上一个@Configuration的注解呢,哈哈还是可以的,毕竟里面已经有这个@Component的注解了。所以我就整理下Configuration,ConfigurationProperties,EnableConfigurationProp...
备战蓝桥杯--贪心算法刷题整理5
翻硬币(贪心算法) 看了一下网上的题解,感觉挺强,网友的做题思想值得借鉴,这里分享一下网友的链接,同时再分享一下自己的解题方案 链接:https://blog.csdn.net/qq_34594236/article/details/60326782 题目描述: 小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母...
部署高可用RabbitMQ
安装 准备工作 这里我们使用三个RabbitMQ节点: 开通端口(具体见官方文档): 安装ErLang和RabbitMQ Server 安装文档见:https://www.rabbitmq.com/install-rpm.html。 采用RPM包而不是Repo的安装命令如下(以下的版本号可根据实际情况修改): 安装管理插件 安装文档见:https://www.rabbitmq.com/manage...
Opencv常用代码总结
文章目录 读取显示图像 保存图片 查看图片信息 读取视频 截取部分图像数据 颜色通道提取、融合与保留 边界填充 数值计算 图像融合 图像阈值 图像平滑(降噪) 形态学-腐蚀操作 形态学-膨胀操作 开运算与闭运算 梯度运算 礼帽与黑帽 图像梯度 Sobel算子 Scharr算子 laplacian算子 Canny边缘检测 图像金字塔 高斯金字塔:向下采样(缩小) 高斯金字塔:向上采样(放大) 拉普拉...
Numpy实现LDA
LDA与PCA的区别如下表: LDA的原理如下: 代码实现如下,这里使用的a,b是Nx2的二维点集合,经过LDA后,二维的点变为一维。更高维度的也是可以做到的。函数里的dim是原始数据的维度,d是想要降到的维度。 初始的数据如下图,红色点和蓝色点代表不同的分类。 经过LDA后,投影的一维数值如下图所示。 可见LDA实现了降维,而且两种分类的间距较大,类内的散度较小。...
猜你喜欢
Java反射机制
相关类型: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.reflect.Method java.lang.reflect.Modifier 作用: 1、反编译 .class –> .java&n...
Linux(Centos7)安装oracle12c
第一步:到oracle官网上下载oracle12c的镜像文件 第二步:添加用户和组 用普通用户登录后,打开命令行工具(terminal) 转到root用户 [vmtest@localhost ~]$ su root Password: 添加组 [root@localhost vmtest]# groupadd dba 添加用户 [root@localhost vmtest]# useradd or...
bootstrap中表格内容过长成省略号,鼠标悬停表格显示全部内容【页面标签中实现】
页面效果展示: 1. 先判断该对象是否存在,再使用freemarker的list语法进行遍历 2. <#if> 中对象.属性值的非空判断和字符串长度的判断,必须得有非空判断,否则报错 3. 字符串的截取显示, <td title=”悬浮显示的值”> 4. 页面代码展示...
ESP8266 AT MQTT 透传指令接入阿里云物联网平台笔记;
文章目录 一:前言 三:创建云端设备 第二步,创建产品 第三步,添加设备 第四步,自定义Topic 四:硬件连接 五:配置终端设备 第二步,根据参数使用AT指令配置ESP-12S使设备上线; 六:MQTT实现发布&订阅消息 七:总结 一:前言 工作之余目前发现有很多客户想产品对接阿里云实现控制,出一篇安信可ESP8266通过AT指令接入阿里云,实现MQTT的订阅和发布。 二:准备材料 1....
