«  早晨的空气真清新~~~   |   Blog首页   |   我看目前流行的flash电子杂志 »

2006/01/24

“重构” -- 每个程序员和项目经理都应该读的经典

刚刚读完“重构”(Refactor)这本书。 这是一本大师级的编程书籍, 也是一本完全是面向实践(而不是枯燥理论)的书, 参考书中的方法可以立刻开始实践并且收益。 书中一些观点,从我们的现状以及我自己的经验来看,是非常有价值的。

“重构”,简单来说就是改进代码, 让代码更“优美”、更清晰、效率更高,并且不改变程序员来的外在表现。

很多书中的观点表面看很简单,但可能只有尝过软件开发的酸甜苦辣、 和各种各样的人一起配合过项目的程序员才能真正地明白。 但无论有教训还是有经验, 看到这本书后立刻开始,都会受益匪浅。

一些很精彩的观点(非摘录,回忆和自身感受写的,未必和书中完全一致)

* 很多项目在初步的设计中结构是优良的,代码品质是优秀的,但所着项目不断进展...需要在变、人员在变... 结构越来越不适合现状,代码质量越来越差... 最后变成一个勉强能完成工作的垃圾堆. 事实,多少漂亮的软件的背后其实就是代码垃圾堆!

  代码品质的腐化现象在现实中非常普遍而且情况很严重。 这种情况下,需要的就是重构! 不断重构,才能让代码不断保持优雅,保持效率,保持可维护性。 

  我们uuzone app的代码显然需要进一步重构。 

* 重构导致花费额外的时间,这是必然的,但经历过失败项目惨痛教训的人,维护过被大量copy/paste充斥的垃圾代码的人, 一定会相信重构其实节省了项目的时间! 我相信这点。 

  想想我们曾经在项目中被迫抛弃了多少垃圾代码? 曾经因为个别炮制垃圾代码的家伙又额外花费了多少时间? 

  那些说“不行,我们项目现在太紧迫了以至于我只能写这些#$%^&代码”的家伙,不是借口,就是应该从项目中淘汰出去的人。 

* 从编程中跌滚摸爬成长起来的人往往会看重前期的设计,但常常会矫枉过正 --过分看重前期设计, 把后期的编码看成“蓝领”工作。 但多少早期的设计能考虑100%完成? 系统稍微复杂些,恐怕就没人能做到。 所以编码后的重构就是对前期设计的不断调整和优化。 

  作了项目经理的你,是否认为编码其实很低级? 认为哪些东西只要设计好了就可以交给印度人去玩了? 如果是这样,那么要小心,最终得到的可能是一个掩盖在精良设计下,也许还能完成功能的小型垃圾堆。 

--

什么时候需要重构? 书中给出了Smell of code的很多情形,更重要的是,这本书的最大好处就是作者总结了很多典型的需要重构的情形,以及推荐的重构办法, 读这本书,就如同在读“数据结构”、“设计模式”那样,文字中充满了智慧,充满了实用和经验。 

--

我觉得重构这个词翻译的并不好。 英文名是"Refactor", 而不是“Restrcut”. 其实refactor是一个小规模的动作,至少是每步是一个小规模的动作,因为refactor的目的不是要推翻全部东西,而是把原来的东西优化,在优化的同时,通过一些谨小慎微的方法来减少因此而引进的bug的可能。 

很多时候,很多人(包括我自己)经常会在看到一堆垃圾不堪的代码和项目的时候,愤然、或者绝望地希望推翻重来,或者另起炉灶。 读完这本书,加上过去的经验教训,让我有了另外的看法, 一个项目是彻底就是垃圾,还是由于“腐化”的原因导致了一些垃圾的出现? 其实一个项目只要不是一群傻瓜弄得,而且还能运行, 就不应该全盘否定。 也许垃圾的只是一小部分,当往往被急躁的程序员和项目经理给放大化了。 其实也许做一些refactor, 项目可以变成一个精巧优美的结构!

老冒 发表于 2006-01-24 16:36  阅读(5060) 评论( 1) 引用( 2) 老冒观点
所有人可见

  • 收藏文章:
  • save at del.icio.us
  • save at digg
  • save at my yahoo
  • save at blinklist
  • save at furl
  • save at simpy
  • save at blogmarks
  • submit at reddit
  • save at spurl
  • save at shadows
  • save at rawsugar
  • save at bloglines

引用

http://www3.uuzone.com/app/trackBack.do?type=blog&trackBackID=74972

估计项目进程,不要以??天你能工??8小时来计算的??
1. 事情比想象的复杂的多。在手机短信息模块添加一个新功能夺取了我两周的休息的时间。中间还申请了两个帮手???离??后测试的时间越来越近了,要求明天昨晚,现 在算是做完了。这个功能是我提出要添加的,并一手设计编写的。以后再提出这样的事情,要有更充分的准备,还要留出预备意外的时间。我想以后有机会,我会先 做个小模型再说话?? 2. 中间找人手帮忙是属意外,时间被压缩了,中间培训花费了1个星期领两天。生活充满意外???下次向上面保证,我会对他们说,这个项目我需要多少时间完成,而不是到几月几号完成。一样是许诺,你成功兑现的比率或许会高出许多?? 3. 正常的程序员,如果不加班,一...

Posted by起点徘徊|Initial Point Lingerat 2006-03-13 22:06

做SNS的应该关注一下这份研究报告:《家庭、朋友和社区:互联网关系的力量》
PEW(这个网站的来头不是很清楚)发布了一份研究报告 :《家庭、朋友和社区:互联网关系的力量》。通过调查问卷分析了互联网对人们的社会关系的影响,研究报告得出的结论是这种影响是正面的,而不是表面看起来那样:人们花了更多的时间在互联网上而减少了和朋友见面、通过电话等传统方式和朋友交流来保持和拓展自己的社会关系。研究报告还提到Email等互联网通信方式是补充而不是代替了传统的交流方式。研究报告下载 问卷调查下载以下是新浪科技编译的相关新闻内容,全文转贴如下:北京时间1月26日消息,美国互联网调查机构“皮尤网络与美国生活项目”(Pew Internet and American Life Pr...

Posted byKenyth的blogat 2006-01-31 02:10

相关内容
更多..

回复列表每两分钟自动刷新一次,想立即刷新吗?点击这里

您的浏览器可能不支持Frame, 优友地带需要使用Frame才能显示正常页面!