Spring+SpringMVC+MyBatis+easyUI整合优化篇(八)代码优化整理小记及个人吐槽
前言
这两天也一直在纠结这一篇文章该写什么东西,前面临时加的两篇文章就有些打乱了整体节奏,这一篇又想去写一下代码层面优化的事情,可是也不太能抓住重要的点,不太确定从何入手,因为这件事情牵涉了太多技术问题,存在于项目的方方面面,如果想要透彻的去讲这件事,我也知道是不可能的,纠结了两天,这篇文章就着眼于最近的一些改动上吧。
花了一周的时间,把项目小小的优化了一下,虽然只是一部分,但是慢慢积累下来,效果应该会越来越明显的。
我的github地址
原因
前面的文章讲了log、maven、测试、版本控制,这些可能都是在项目维度上的一些优化方案,但是我想了一下,好像代码这一层的优化确实没有刻意的去记录过,觉得平时实现功能和解决bug的都是必须的再正常不过的事情了,因此也没有单独写一篇文章去说这个事情。
为什么今天会写这么一篇文章,也是因为最近的个人状态不怎么好吧,要工作,要更新代码,要新增功能,还要写博客,实在是有些无法全部兼顾,尤其是最近代码的修改和提交也比较频繁,写博客这件事就有些跟不上进度了。几件事情都想要去做好,但是精力有限,因此最近状态也有些起伏,希望这几天可以调整好。(这两句话是发发牢骚,顺便凑凑文章的字数)。
平时做练习的时候,也不止写了这一个项目,以后也会陆陆续续放到github上来。这个小demo更新了也有两个月了,打算就在这篇文章里讲讲对代码的改动和一些自己的想法,当然,都是围绕这个demo及最近的一些修改去论述,以往的修改以及以后的计划可能就不会提太多。
至于这次修改的原因,一方面,是自己想对项目小小的动一次刀,另一方面,是开源到网上之后,很多朋友都给了反馈,指出了许多的问题,因此也更坚定了心中的想法,还有一个原因,就是有些朋友的做法我不是很理解。
如何优化
首先是优化目标的明确,结合网友的反馈和自己的想法,总结了以下四点:
- 代码整洁
- 提升响应速度
- 体验优化
- 减少资源开销
然后是要找到优化的关键点,确认优化的方向使得方案落地。
代码整洁:
- 代码命名规则
项目不大的时候可能也不会有特别不协调的感觉,但是如果项目越来越大,参与其中的同事越来越多,差异性和不协调行就体现出来了,每个人都按照自己的方式、每个人都天马行空、每个人都按照自己的想法不作出妥协,最终得到的可能是一团一团乱麻一样的代码,如果项目中新增一位成员,看着各种风格的代码,应该会疯吧。
这是15年写的代码,那时候对于命名规则还不怎么关注,编写代码的时候只讲究功能实现,写的时候也就天马行空任意发挥,想怎么写怎么写,不考虑后期的维护或者和同事之间的合作。如果一直这样肯定不会有什么进步,实现了功能后,也要想想怎么更好的实现功能,怎么使得代码更美观,怎么使得响应速度更快,怎么更安全,怎么更健壮....
针对于此做了两个方面的改动,一是检查了java代码中的命名规则,其中不合理的做了修改,改为驼峰命名法,二是修改了一下数据库表中字段的命名方式,统一改为蛇形命名方式,以后都会遵循这两种方试,做好代码规范。
- 清理程序中多余的代码
代码中有很多注释,或者一些暂时用不到的代码,由于担心可能会用到或者担心项目经理突然改变主意了,因此就注释掉放在项目里不管了,少量代码还好,如果时间长了,这种不在意的代码越积越多,影响代码观感,也影响后期维护人员,因为在熟悉代码时不仅要看正常的代码,这些注释了未删除的代码也要一并看了,不然他也觉得会漏掉东西,这就是个不良循环,实际上没用或者说连编码者都不知道什么时候会用到的代码充斥在项目里,实在不是一件好事,因此,该果断删掉的就果断删掉,即使将来用到,你也完全可以查询版本记录。
由于一些原因,删除了书架的功能,一开始是想注释掉的,觉得可能有人会用到,后来还是全部删除了,这种"无用"代码存在于项目里真的不是一件舒心的事。
体验优化和速度提升:
布局不合理,页面卡住,加载速度慢,bug太多,这些因素都会导致用户体验很差,屎一样的东西没人愿意用的,针对这几个问题做了如下修改。
- 页面布局修改
不止一次有人留言说过页面中布局不合理,没有做自适应,页面会随着浏览器的拉伸而卡住,一开始并没有立刻修复,因为当时有其他功能需要上线,所以就搁置了,这次重新修改了页面布局,看起来比原来清爽许多,也不会因为拉伸而卡住了。
- 提高加载速度
在原来的列表页面,打开都比较慢,加载动画就一直转啊转,用户看到这个页面就只能一直等,直到页面渲染完成,这个过程就比较煎熬。导致这个问题的原因就是请求时pageSize设置不合理,数值过大导致加载较慢,100条数据就说明网络请求需要从后端服务器传输100个数据量的数据,得到这100个量的数据还要通过js去渲染这100条数据到页面中,现在pageSize改为10,只需要从后端获取并传输10个数据量的数据,前端js也只需要渲染10条数据就完成整个渲染过程,10和100的比较,速度对比还是很明显的。
- bug修复
bug太多,用户在页面中得不到正确的响应,也很影响体验,url跳转错误和重复alert的bug修复后,首页的体验应该会好一些。
减少资源开销:
尽量重用对象
减少使用new关键字创建对象
程序中有多线程线程编码时使用线程池
使用数据库连接池
下一篇开始详细介绍
总结
其实代码优化这件事呢,一直在做,可以在github上看到一条条的commit,记录着代码的变化及功能改动。以往呢确实没着重的去讲这个点,因为这是一件会持续下去的事情,即使讲也只能讲其中的一部分,实在太多知识点了,刚好这周并没有做太多的功能,只是做了一些修修补补,于是用一篇文章来对这周完成的工作做个总结,以后还会用更多的篇幅来讲述项目的改进和优化。
吐槽
其他事情不说了,就说现在的网站吧,我本来想的就是大家下载代码之前可以先体验一下,但是有些人做的事情怎么就这么讨厌呢?两件事让我有点儿烦躁,1.改admin密码,2.乱插数据。
我是真的想不通啊,体验测试可以,修改数据可以,但是为什么你连登陆信息也要改,你改了别人就不看了?还有些人呢,添加了n多的数据,往一张表里添加了1000万条左右的数据,导出来都是几百兆的文件,我也是很烦躁,哈哈哈。可能有些人会说,谁让你自己写的不严谨的,活该。他妈的,我代码公开的,账密也公开的,我还怎么严谨?有些时候也不能只考虑自己完全不顾及别人吧。也因此修改了部分功能,这种人也真的是无聊幼稚。
算了,也不怪别人了,有问题就自己修复吧,怪也没用,谁理你。
第一次,当它本可进取时,却故作谦卑;
第二次,当它空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中虽不甘心,却又畏首畏尾。