提升项目组的开发效率

发表于:2007-05-25来源:作者:点击数: 标签:http开发效率blog.javares提升
http://blog.javaresearch.org/page/cherami/20050616#%E6%8F%90%E5%8D%87%E9%A1%B9%E7%9B%AE%E7%BB%84%E7%9A%84%E5%BC%80%E5%8F%91%E6%95%88%E7%8E%87 通过几年的实际工作,也参与了规模不一的多个项目,但是项目组的 开发 效率一直不高,一直都在思考这个
http://blog.javaresearch.org/page/cherami/20050616#%E6%8F%90%E5%8D%87%E9%A1%B9%E7%9B%AE%E7%BB%84%E7%9A%84%E5%BC%80%E5%8F%91%E6%95%88%E7%8E%87

通过几年的实际工作,也参与了规模不一的多个项目,但是项目组的开发效率一直不高,一直都在思考这个问题的症结,最近换了一个公司,由于刚刚去,也不能修改比较核心的代码,就给他们修改bug,在修改其中一个比较有共性的问题时接触了很多他们原来写的代码,发现代码中充斥着很多完全相同或者几乎完全相同的代码,最典型的就是获得数据库连接以及关闭数据库连接的代码,有的类会封装一个自己用的方法,有的就是干脆每次重复,有的更是有相关的方法但是代码的其它地方却没有用,这个现象给了我比较大的触动,现在仔细想想,其实影响一个项目组的开发效率的很大的因素就是代码共享和知识共享太缺乏了。但是代码共享和知识共享又确实是比较困难的事情,共通的功能如何使用,需要什么约束条件,能够完成什么功能等等都需要有比较完善的文档,而一旦这样的功能多起来以后你要从这些功能中找到需要的功能有时候确实是比较困难的,特别是有些功能去查是否有现成的代码所花费的时间可能比自己写一个还多。

根据我的经验,有几个地方注意一下就可以比较好的解决:
  1. 共通的内容要易于使用和理解,例如定义的方法名要比较贴切。
  2. 要写比较详细的说明文档,例如给大家发邮件或者发布到内部使用的论坛系统中。
  3. 在公布之前经过充分的测试,否则使用的时候总是有各种问题会导致大家不敢再用共通的代码。
  4. 对于类似的功能有其共通的代码,例如使用struts的系统有自己的系统的顶层的BaseAction,在这个BaseAction中定义系统中的子类需要实现的业务逻辑方法入口,而BaseAction要实现structs要求的execute方法,并完成所有的共通任务,例如是否登录的检查,session是否超时等
  5. 业务功能要比较少的关心杂项共通功能,例如定义logger,获取数据库连接,关闭数据库连接,异常处理等,这些功能都可以定义在BaseAction或者是系统的顶层基类中。
而且通过使用共通功能也可以很大程度提高系统的质量,因为通过这些年的实践发现,很多新人由于开始不理解系统的要求,很多地方就是先抄袭别人甚至完全拷贝别人的代码,如果别人的代码是有问题的,那么在没有出问题之前是很难被自己发现的,而到了发现的时候已经积重难返了,而通过顶层类的封装,底层的类的空间就狭窄了,犯错误的可能性就小多了,因为很多系统的共通要求在顶层类中已经实现了。

原文转自:http://www.ltesting.net