近几周一直在加班,主要的工作内容就是修改已离职人员代码中的bug。
每天白天都有想骂街和砸电脑的冲动,然而看着一个个bug修复,跳过前人埋下的坑,将整体代码架构重新梳理优化,又有一种玩游戏时闯过一个个关卡的快感。
造成这种bug横飞的局面主要原因就是我在带开发小组的时候,只关注了项目的进度和软件的主要功能流程,忽略了代码具体实现细节,因为开发人员也是有多年开发经验,项目起初的时候我看他们代码写都还可以,也给他们交待了一些代码规范的要求,之后因为忙于整理需求和参与其它项目的工作,就在没看过他们的代码。
他们的工作完成后,我会看主要功能点,看功能点都实现了就没做详细检查,就将工作标记为“已完成”然后转给开发人员进行测试。
因为我带了两个开发人员都是外包公司新入职的员工,入职不久到我们公司就参与到该项目,在过了三个月试用期之后,可能他们以为公司的工作比较累,就在转正的时候提出了加薪,外包公司人事主管 没有答应,他们就没有提交转正资料,另找了其它起薪比现在高的工作。公司也没有去留他们,他们就直接走了,留下了我认为写的还不错的代码。
他们在的时候,项目测试工作还没有开始,所以问题没有暴漏。他们走后项目正好也开始了公司的内测和客户安排的第三方软件测试,bug不断的涌现了出来,因为没有多余的开发人员,我只能自己去修改bug,此时才开始去看他们的代码,不看还好,一看立马懵B了。
主要的问题有下面几个:
代码命名比较任性,有的控件名称和变量直接用aa、bb、cc没有实际含义的字符命名。
函数的名称和实际功能不符,比如有个返回值为void的InsertEntity的函数,我以为只执行了插入实体,其实里面写了好多查询逻辑将结果赋值给了公共变量。
函数从其它类模块拷贝另一个类中,只进行了逻辑的修改,函数的命名没有修改,更逗的是代码注释都没有修改,比如一个班级的类你一看里面方法都是写的和缴费类相关的方法注释。
对面向对象是用的不好,函数没有进行很好的封装,写的时候固然省事,造成的结果就是代码量过多,可读性查。
好在这周的时间将他们的代码模块整理完毕了,但是在此过程中我也看了下项目中其它同事的代码,那也是有些乱,我总结的上述问题,在他们的代码中都有出现,因为是几年的同事了,我了解到他们的水平不致于这样,我就在吃饭的时候,随口问了问,你代码中的这些问题你知道吗?他说“知道呀,现在不是忙吗?哪有时间去做的那么细”,我又找部门经理聊了聊“他说,他也很无奈,时间比较紧,就先不去计较那些细节了”。
做项目我们都知道“范围、时间、成本、质量”这写点是互相制约的,我觉得不能为了图快、图敢进度而去忽略了必要的质量把控过程,比如代码的走查,在项目上线的时候修复质量问题同样会花费时间、成本。
我认为项目开发阶段就忽略质量把控环节,无异于饮鸩止渴,这次我也尝到了苦果,还是那句话”步子迈得大了容易扯着蛋“,还是一步步来,该做的环节不能省。