来到新公司已经三个月了,进入IT行业一年零3个月。第一年就是不断的开发新项目,平时也很少注意代码的结构,代码的注释,数据库的设计,就是不断完成功能。到了新公司后,没有开发新项目,维护老项目(修改bug,开发新需求)。
我本来以为这种工作会很轻松,项目运行了三四年,bug应该不多吧,没有新需求来的话,应该是优化优化代码,过着惬意的生活,但是事实是残酷的,一进来就分了20几个bug过来了,而且是比较久的bug了,同时很多奇葩的bug。没有需求文档,没有设计文档,改一个bug就去找测试问这里应该修改成怎样,伤不起。改的过程中,发现代码几乎没有注释,而且还遗留着很多不用的变量,jsp页面还需要我去通过search找到对应的xml里的配置。问题多多。。。
总结了下主要有以下几个问题:
(1)代码结构的不清晰,主逻辑代码与增删改查的代码混淆一起。导致新人进来就会参与主逻辑的处理,由于对业务了解的不清晰,产生了一些隐藏的bug,导致系统无法正常运行。
(2)代码注释不够,一个方法经常好几百行的代码,见不到注释。导致维护时对逻辑的处理无法清除。
(3)数据库设计问题较大,查询语句join三四个表示正常的,最多的join了13个左右。
我也反思了我第一年写的代码,其实我那一年的代码写的也很烂,只是没有维护过老项目,不知道看别人凌乱代码的痛苦。
我在想如果我去带一个小组进行开发的时候我会如何保证代码质量。
我的第一个想法是主逻辑处理应该与一些简单的增删改查功能分开写,那样的话会保证程序基本正常的运行,数据处理出错的概率较小,也容易分工,中高级程序员负责主逻辑的处理,初级程序员则可以开发一些简单的增删改查功能。
第二个想法是如果快速找到相关页面,就是控制层跟对应的页面都表现在url里,例如controller层的类是admin,对应的方法是findByPage的话url就为admin/findByPage.html,对应的jsp或者velocity,freemaker就交admin_findByPage.jsp...这样的话修改bug方便容易进行错误查找。
第三个关于编写js的想法,现在编写js基本是一堆的function,可以考虑一个js文件里定义个以文件名为变量名称的变量例如admin.js var admin={};然后通过admin.del =function(){}去写function,方便定位具体的js位置。
还有数据库设计这块,因为之前接触相对较少,目前正在学习如何设计,出现10几个join的情况应该是设计的问题。