Feeling

    三人行,必有我师焉

   ::  :: 新随笔 :: 联系 ::  :: 管理 ::
  185 随笔 :: 0 文章 :: 392 评论 :: 0 Trackbacks
假如你是一个Leader,那么你敢对你的自己的项目Refactor吗?当然我这儿所说的Refactor不是仅仅修改几个Class而已,而是将旧有的框架完全抛弃,而建立一个全新的框架。你能面对Release的压力,还有项目成败的挑战吗?

当一个Project越来越大,Logic越来越复杂的时候,就有的框架体系往往不能满足新Feature的要求,于是程序员们有两种选择,要么重构,要么打补丁。对于后者,如果开发人员水平高一点,补丁的痕迹还不会很明显,如果水平一般的话,这段代码往往就会形成一个恶梦。久而久之,整个项目都会积重难返,直至崩溃。

很幸运的是,我所在的Team从一开始就定位于坚持Refactor。基本上每个MileStone,都会有1-2个人手上的活不是new feature,而是refactor。也许刚刚开始refactor的时候会无从下手,毕竟很大的一块,不是说动就动的。但是不管怎么样,refactor之后的效果是显而易见的,新的扩展很容易实现,往往只要覆写某个方法就可以实现一个新的feature。磨刀不误砍柴工,refactor很好的诠释了这一点。

看过《重构》这本书的人,都会知道重构须从小处做起,不断坚持,但这样的重构也只仅仅局限于某些功能点的重用性而已。真正的重构,是需要大刀阔斧的。一个项目,你很难知道后期的行为,因此代码框架也很难一直适应新的需求。当需求不断变更的同时,如果固步自封,浑身打上狗皮膏药,补丁越多,维护越累。当量变达到质变的时候,也就是项目崩溃的时候。只有坚持对框架进行调整,才能够不断的满足新的需求。

说到这儿就不得不说到团队间的合作问题,一个产品,往往是由几个Team共同协作完成的。基本上每个Team都只需要负责自己的模块,并且根据工作量的大小有相应的人手。那么你认为在这儿Team之间,大家工作的感觉会想差不多吗?实际上,每个Team内部的情况完全不一样,有的Team,一个人平均每天只能该1个Bug,有的Team能够该3-5个。归根结底,还是由于框架的问题。如果框架结构清晰明了,改起来自然简单,往往一行代码的修改就能解决问题。框架结构复杂的话,那就不好收拾了。框架的作用就是增加重用性,降低耦合度。我们这儿有一个Team,框架3年都没有什么改变了,而且由于人员的更迭,很多代码都和黑盒一样,没有人能够看明白。我敢说,我一天改10个Bug都不在话下,他们能说吗?

一个Leader要维护Team之间的平衡真得很累,结构好了,自然就做的快了,可那又不是自己的错,做得慢的Team不但拖累自己,到头来还硬要说你出风头。开发人员第一个需要拥有的素质就是能够不断自省,要学会先怀疑自己。把所有的责任都推卸出去了,到最后问题没解决那还是自己的。一个项目的成败也往往是由Leader的管理水平来决定的。如果Leader都怕失败,不敢去承担责任,那么手下的人自然也没有这个义务了。

我只想说一句,不敢对自己现有的框架体系做出挑战的,不能够自省的Leader,都是对自己的项目,自己的手下不负责任。一个项目最终的成败,也可能就毁在这些人手上。
posted on 2007-05-02 18:51 三人行,必有我师焉 阅读(842) 评论(4)  编辑  收藏

评论

# re: 你敢对自己的项目Refactor吗? 2007-05-02 19:12 dennis
Refactor是建立在完备的单元测试的基础上,没有完备的单元测试,Refactor是一种冒险。  回复  更多评论
  

# re: 你敢对自己的项目Refactor吗? 2007-05-02 19:30 三人行,必有我师焉
不幸的是,我们组是GUI组,是不具备单元测试的。而那个3年没有重构的Team是Model组,有完备的单元测试,可惜从来没有利用过。难道在没有单元测试这个概念之前,人们是不会去重构的吗?还有QA是用来干什么的?QA也有完备的测试方案,在GUI部分应当是可以替代单元测试的。我很难想象现在还有很多公司居然只有可怜的几个QA,根本无法维护一个产品的开发进度,随之而来的后果就是每次进行客户演示的时候,Bug层出不穷的展现出来(所谓的演示综合症)。

也许WEB应用对重构并没有什么太多的体验机会。但是如果开发的是像Eclipse这样完全靠扩展机制来吃饭的体系,那么要求一切都是可扩展的,重构的重要性才能最大化的体现出来。

Refactor的另外一个因素应当和人有关吧,框架的重新设计、代码的实现都是对开发人员的一种考验。

除了小步前进的敏捷开发模式,当然还有模块完全替代的case。一切都由人来决定,不需要那么教条主义。关键是能否做出精确的判断,这需要一个Leader的魄力了。  回复  更多评论
  

# re: 你敢对自己的项目Refactor吗? 2007-06-07 19:00 qililhjcn
无语,目前貌似还没有进到这一步  回复  更多评论
  

# re: 你敢对自己的项目Refactor吗? 2007-09-10 16:56 萝卜头
个人观点:小步的重构是基础,如果把原来的代码一下子全部推翻重来的话,那不如不叫重构,直接称之为重写得了。
尽管没有unit testing 也可以进行重构, 但是重构的过程会比较危险.
领导人的魄力固然很重要,但更多的时候我们需要的是制度保证,而不是依靠人治.  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
 
GitHub |  开源中国社区 |  maven仓库 |  文件格式转换