会议室预约系统从设计到开发和测试都是我自己完成的,这个过程中遇到不少问题,也有很多的收获,在此分享一下。
1、在代码设计阶段一定要做好规划。这是我这次体会最深的一点。因为,在项目前期,功能比较单一的时候,设计还能比较规范,会做一些记录,到了后期,有其他任务在忙,导致时间比较紧张,就没有认真的在做设计,导致后期代码比较乱,功能叠加的时候容易出问题,后期代码优化也花了一定的时间。如果认真做好设计,这些时间在一定程度上是可以减少的。
2、这个项目虽然比较小,但是通过这个项目,我对于原生js有了进一步的了解,并且对于前后端数据传输以及Servlet有了更深的认识。为以后的学习和工作打下了基础。
3、在单元测试的时候要尽可能的考虑全面,这种web应用更需要大量的测试。在每个功能开发完成后,我一开始就是简单的测了几遍,觉得差不多了,就往下进行。结果在功能叠加比较多之后,测出来一个比较严重的bug:刷新页面后单元格多出一块来。不得不从头开始找原因,最后,发现是显示数据的方法中每次循环都要获取单元格的id,但是我获取完了之后没有重置,所以导致了这个问题。修改完之后,我认为如果在显示数据方法完成后进行大量的测试,这个问题当时就能被发现,不至于到了快结束的时候还在改这种功能性的重大bug。还有一个是查询数据的时候,我一开始是用的会议室编号加时间作为约束条件进行的查询,测了几次发现没错之后就觉得可以了,但是随着后期数据量的增大,这种设计问题就逐渐暴露出来了,数据量大了之后查询效率比较低,因此后期增加时间段作为约束条件,提高了查询效率。这些问题如果经过反复的大量的测试是可以在早期就能发现的,这也为我以后的单元测试提了一个醒。
4、用户没完成一个操作要给出提示,特别是操作失败的时候,用浏览器的alert()或者confirm()作为提示用户体验很不好。一开始的时候只注重在功能的开发上,没有注意用户体验,以后这方面需要更加注意。
5、页面刷新可以简化流程。会议室结束时间的选择这个功能上,我一开始想的是,在增删改这几个操作完成后进行重置,没有使用页面自动刷新,这样就把问题复杂化了,测试的时候问题比较多,因为在增或者删或者改这几个操作完成时都要进行重置,有可能出现遗漏。后来,我设置了页面刷新,增删改完成后每次都刷新页面,问题就得到了简化,测试的时候有问题也比较好找了。
6、这个项目前端部分我是用的原生js写的,原生js的语句比较麻烦,有时候为了选定一个组件要写很长的语句,而且.innerHTML()方法还不一定能显示所有组件内部的文字,有的需要在浏览器里console出来才能确定。这也花费了一定的时间,所以以后会尽量使用jQuery来写(如果不用框架的话)。