日常啰嗦

这两天也一直在纠结这一篇文章该写什么东西,前面临时加的两篇文章就有些打乱了整体节奏,这一篇又想去写一下代码层面优化的事情,可是也不太能抓住重要的点,不太确定从何入手,因为这件事情牵涉了太多技术问题,存在于项目的方方面面,如果想要透彻的去讲这件事,我也知道是不可能的,纠结了两天,这篇文章就着眼于最近的一些改动上吧。
花了一周的时间,把项目小小的优化了一下,虽然只是一部分,但是慢慢积累下来,效果应该会越来越明显的。
我的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万条左右的数据,导出来都是几百兆的文件,我也是很烦躁,哈哈哈。可能有些人会说,谁让你自己写的不严谨的,活该。他妈的,我代码公开的,账密也公开的,我还怎么严谨?有些时候也不能只考虑自己完全不顾及别人吧。也因此修改了部分功能,这种人也真的是无聊幼稚。

算了,也不怪别人了,有问题就自己修复吧,怪也没用,谁理你。

Spring+SpringMVC+MyBatis+easyUI整合优化篇(八)代码优化整理小记及个人吐槽的更多相关文章

  1. Spring+SpringMVC+MyBatis+easyUI整合优化篇

    优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇(二)Log4j讲解与整合

    日常啰嗦 上一篇文章主要讲述了一下syso和Log间的一些区别与比较,重点是在项目的日志功能上,因此,承接前文<Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)Sy ...

  3. Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例

    日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试>讲了不为和不能两个状态,针对不为,只能自己调整心态了,而对于不能,本文会结合一 ...

  4. Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)结合MockMvc进行服务端的单元测试

    日常啰嗦 承接前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例>,已经讲解了dao层和service层的单元测试,还有控制器这层也不能 ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能

    日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...

  6. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化

    本文提要 最近写的几篇文章都是关于数据层优化方面的,这几天也在想还有哪些地方可以优化改进,结合日志和项目代码发现,关于数据层的优化,还是有几个方面可以继续修改的,代码方面,整合了druid数据源也开启 ...

  7. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化

    阶段总结 又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零5天,这两个多月的时间,完成了第一个项目ssm-demo的更新,过程中也写了33篇博客 ...

  8. Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合

    日常啰嗦 本来这一篇和接下来的几篇是打算讲一下JDBC和数据库优化的,但是最近很多朋友加我好友也讨论了一些问题,我发现大家似乎都是拿这个项目作为练手项目,作为脚手架来用的,因此呢,改变了一下思路,JD ...

  9. Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log

    日常啰嗦 距离上一次更新博客有一段时间了,主要是因为最近有开发任务,另外,这段时间也在学习docker的相关知识,所以博客就没有继续写了,推荐一本书<Docker技术入门与实战>(第二版) ...

  10. Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)Java语言中System.out.print与Log的比较

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 前言 距离上一次更新博客有一段时间了,主要是因为最近有开发任务,另外 ...

随机推荐

  1. 用Javascript大批量收集网站数据

    最近为了写论文,要大批量收集慕课网的相关用户数据(因为用户个人主页是公开的),故而写了一个插件进行收集.需要在慕课网控制台输入.最后收集了3000多份数据. /* 收集项 收集标准 用户编号 慕课网用 ...

  2. Unity Shader 知识点总结(二)

    紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...

  3. 聊聊"jQuery is not defined"

    KiwenLau同学在他的个人博客使用了Fundebug的JavaScript错误监控插件,然后偶尔会收到jQuery is not defined这样的错误报警: 他的博客使用了Staticfile ...

  4. virtualBox,webstorm,开虚拟机传代码

    一起git一个新技能 利用virtualBOX在本地开一个虚拟机,然后设置webstorm连接到虚拟机,将代码传到虚拟机里. 以下详细讲解: 第一步: 第二步:管理虚拟机的设置(我是用的是Xshell ...

  5. SSH整合缓存之-Memcached作为hibernate的二级缓存

    Hibernate本身不提供二级缓存,所以需要使用第三方插件来作为二级缓存:本次使用memcached作为Hiberbate的二级缓存:添加步骤如下: 一.需要安装memcached服务端 1. 下载 ...

  6. HTML <form> 标签的 method 属性(20161028)

    HTML <form> 标签的 method 属性 HTML <form> 标签 实例 在下面的例子中,表单数据将通过 method 属性附加到 URL 上: <form ...

  7. HTML5学习笔记<六>: HTML5框架, 背景和实体

    HTML5框架 1. 框架标签(frame): 框架对于页面的设计有着很大的作用 2. 框架集标签(<frameset>): 框架集标签定义如何将窗口分割为框架 每个frameset定义一 ...

  8. 图解Javascript——变量对象和活动对象

    span { line-height: 1.5 } 这是由一段代码引发的思考: var laterDeclaredVar = 'I am a global variable ...'; (functi ...

  9. 基于原生js的返回顶部组件,兼容主流浏览器

    基于原生js的返回顶部插件,兼容IE8及以上.FF.chrome等主流浏览器. js文件中封装了getScrollTop()和changeScrollTop()函数分别用于获取滚动条滚动的高度和修改滚 ...

  10. webService常见问题

    1.普通字符串(日期形式)转换为XMLGregorianCalendar SimpleDateFormat simpleDateFormat =new SimpleDateFormat("y ...