W3CHINA Blog首页    管理页面    写新日志    退出

Blue blue sky

[工作八卦]重构的故事 
小工头 发表于 2010-12-12 14:03:24

 又有日子没写blog了。原因是这样的:近日替老总写发言稿。老总给了一份模板,叫俺照样填写即可。模板问:我公司的产品,对构建和谐社会有何影响?俺:“……”模板又问:我公司的业绩,对推动区域经济发展有何作用?俺:“……”模板再问:我公司的成就,对改善国计民生有何贡献?俺:“……”就这样,俺再一次理屈词穷,直到今天才缓过劲来。俺深切地体会到,自己实在是太~~~~缺乏思想高度啦。噩梦醒来是早晨,俺还是写正文吧。俺在公司工作已经四年,发展还算顺遂。然而,每当在代码中看到某个类的时候,俺就会脸上发烧,坐立不安。那是俺到公司不久时写的。彼时俺刚刚开始从C向C++转型,对OOP的理解十分粗浅。以俺现在看来,虽然勉强在形式上完成了封装,但是非常的笨拙,不合理,没逻辑,重用性差。简而言之,就是一坨屎!俺一直想把这坨代码毁尸灭迹,不幸的是它一直运转良好,不仅没被销毁,反而被多个项目引用。虽然所有人都嫌这个类的实现太别扭,但是基于“如果代码还能工作,就不要动它”的古训,重用前人代码的良好愿望,以及工作量减少一点是一点的私心,俺的这段代码不断扩散。终于,在听到第100个“这个类太难用了,不知是哪个SB写的”的评论之后,俺再也不能忍受了!俺要体现自己的水准,俺要改写这段代码,俺要……领导狐疑地打量着俺:“你要重构?你真的要重构?”领导对重构不太感冒,对俺做重构缺乏信心,这是可以理解的。首先,重构就是在不改变功能的情况下,对代码进行重新构建。也就是说,重构不会增加新的功能点。而重构后的代码到底哪里更优秀,基本上是如人饮水,冷暖自知的事。那么,重构的工作量和绩效要如何评估呢?其次,“如果代码还能工作,就不要动它”的古训是有道理的。相反,俺有多次擅自修改代码引入新bug的不良记录。两相对照,领导如何放心让俺去重构?再次,领导也明白,重构是编程工作中最有技术含量的部分,也是IT青年最向往的工作内容。这么黄金的工作,当然要首先分给领导心目中最信任、最得力的部下(事实上,有一个重构的项目正在进行中),怎么能贸然分给俺这么个……原本重构这事就要黄了,但是由于领导自身的原因,出现了戏剧性的转折。领导喜欢重构,但更喜欢毕其功于一役。于是,他老人家发起了一个重构项目,目的是把俺们三年前的代码从头到尾整个儿重构一遍。该项目由领导最赏识的精英BB领头,四个BB小弟协助,正在紧锣密鼓地进行。按照领导的计划,这个项目应该在两个月内完成。不幸的是,现在已经过去了三个月,项目组还在泥潭中挣扎。此时来了一个紧急需求,要求减小俺们的代码体积。领导一时无人可用,就把这个任务分给了俺。于是,俺终于可以正大光明地做重构了。由于做重构的关系,俺把代码重新审视了好几遍。不看不知道,一看吓一跳。俺从代码里找出了五个功能一样、名字不同的类,还有好几个功能相似的接口。俺把他们合并了一下,又调整了几处不必要的关联,代码体积一下子减少了20%。想不到重构的作用如此显著(这话也可以反过来说:想不到俺们的代码如此破烂),把领导也吓了一跳。话说回来,重构也是有风险的。有一次俺过于兴奋,在重构时用上了自己不成熟的构想,结果一下子陷在里面,只觉得四面八方都是代码,一眼望不到头。整整一个星期之后,俺才从编码中脱身,开始测试。虽然最终通过了测试,但与重构之前相比,新代码并没有明显的优势。一个直接的指标是,花了这么长时间,代码的体积只减少了不到1K,投入产出比太低。这个故事教育大家,重构也要悠着点。由于市场压力的存在,IT青年做重构的机会其实并不多。这是俺的第一次重构,值得记录一下。以俺的体会,做重构要的就是提高代码质量,最怕的就是引入新bug。因此,一定要做到两件事:一是一定要清楚地知道自己写的是什么代码,二是要及时地测试验证。顺路说一句,俺对重构的喜爱也是俺对统一过程开发模式有抵触的原因。重构意味着俺对项目的认识是不断深入的,而统一过程强调认识不够深入就不能进行开发,二者显然有所冲突。

阅读全文(5297) | 回复(2) | 编辑 | 精华

 


回复:重构的故事
跳芭蕾舞的猪(游客)发表评论于2010-12-13 9:51:25

勉强看懂,既然来了,就按个爪吧。小工头是不是也奖励我一下啊,这个博客俺都追了三年了。 三年,一个陌生的女人都可以成为俺孩子他娘了,咱俩还是那么陌生。以下为blog主人的回复: 感谢芭蕾猪同学不离不弃~有空见个面,一起吃个饭?

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

 


回复:重构的故事
真不准发表评论于2010-12-12 15:07:07

重构。。。有意思的事情。通常项目过了一年,根本没信心重构了,客户也会觉得原系统挺好,重构什么?

 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



This is home

.: 公告

有人的地方就有恩怨

有恩怨的地方就是江湖

人在江湖漂,谁能不挨刀


Bloginess

«August 2019»
123
45678910
11121314151617
18192021222324
25262728293031

.: 我的分类(专题)

首页(629)
杂项(69)
我喜欢过的声音(35)
耳机评测(18)
七天乐(127)
工作八卦(174)


In the Bowl

.: 最新日志

变化:俺的2012
迟来的总结,俺的2011
暂停更新:娶了媳妇不上网
一次坦诚的大会
妹子,妹子!
领导满月
当了领导能怎样
俺的播放列表
俺的重构总结
开会的故事

.: 最新回复

回复:迟来的总结,俺的2011
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:小学生作文之记一次拔河比赛
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:暂停更新:娶了媳妇不上网
回复:一次坦诚的大会
回复:一次坦诚的大会
回复:一次坦诚的大会


The Fishkeeper
blog名称:少年包工头的工作日记
日志总数:629
评论数量:1458
留言数量:56
访问次数:8742356
建立时间:2004年12月8日



Text Me

.: 留言板

签写新留言

你太客气了
工作是为了更好的生活。。。
飘过!
初烧耳机
路过留声
自动浇花
节日快乐
向您请教
HAHA
咨询下呵呵


Other Fish in the Sea

.: 链接



Lake JJ

真!鱼家MM

传说中的99

王小四的自留地

挣扎中的职场新人tintin同学




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144294678 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号