重构--改善既有代码的设计

重构--改善既有代码的设计

ID:39409300

大小:3.46 MB

页数:470页

时间:2019-07-02

重构--改善既有代码的设计_第1页
重构--改善既有代码的设计_第2页
重构--改善既有代码的设计_第3页
重构--改善既有代码的设计_第4页
重构--改善既有代码的设计_第5页
资源描述:

《重构--改善既有代码的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、重构--改善既有代码的设计作者:MartinFowler,KentBeck,JohnBrant,WilliamOpdyke,DonRoberts翻译:侯捷、熊节MartinFowler和本书另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。本书解释重构的原理(principles)和最佳实践方式(bestpractices),并指出何时何地你应该开始挖掘你的代码以求改善。本书的核心是壹份完整的重构名录(catalogofrefactoring),其中每壹项都介绍壹种经过实证的代码变换手法(codetransformation)的动机和技术。某

2、些项目如ExtractMethod和MoveField看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口。软件工程领域的超级经典巨著,与另壹巨著《设计模式》并称"软工双雄",全美销量超过100000册,亚马逊书店伍星书。在本书中,作者MartinFowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。当对象技术成为老生常谈之后——尤其在Java编程语言之中,新的问题也在软

3、件开发社区中浮现了出来。缺乏经验的开发人员完成了大量粗劣设计,获得的程序不但缺乏效率,也难以维护和扩展。渐渐地,软件系统专家发现,与这些沿袭下来的、质量不佳的程序共处,是多么艰难。对象专家运用许多技术来改善既有程序的结构完美性与性能,已有数年之久。译序by侯捷见过铁路道班工人吗?提着手持式砸道机,机身带着钝钝扁扁的钻头,在铁道上、枕木间卖力地「砍劈钻凿」。他们在做什么?他们在使路基上的碎石块(道碴〉因持续剧烈的震动而翻转方向、滑动位置,甚至震碎为更小石块填满缝隙,以求道碴更紧密契合,提供铁道更安全更强固的体质。当「重构」(refactoring〉映入眼帘,我的大脑牵

4、动「道班工人+电动砸道机+枕木道碴」这样一幅联想画面。「重构」一词非常清楚地说明了它自身的意义和价值:在不破坏可察功能的前提下,借由搬移、提炼、打散、凝聚…,改善事物的体质。很多人认同这样一个信念:「非常的建设需要非常的破坏」,但是现役的应用软件、构筑过半的项目、运转中的系统,容不得推倒重来。这时候,在不破坏可察功能的前提下改善体质、强化当前的可读性、为将来的扩充性和维护性做准备、乃至于在过程中找出潜伏的「臭虫」,就成了大受欢迎的稳步前进的良方。作为一个程序员,任谁都有看不顺眼手上代码的经验一代码来自你邻桌那个菜鸟,或三个月前的自己。面临此境,有人选择得过且过;然而

5、根据我对「程序员」人格特质的了解,更多人盼望插手整顿。挽起袖子剑及履及,其勇可嘉,其虑未缜。过去或许不得不暴虎凭河,忍受风险。现在,有了严谨的重构准则和严密的重构手法,「稳定中求发展」终于有了保障。是的,把重构的概念和想法逐一落实在严谨的准则和严密的手法之中,正是这本《Refactoring》的最大贡献。重构?!呵呵,上进的程序员每天的进行式,从来不新鲜,但要强力保证「维持程序原有的可察功能,不带进新臭虫」,重构就不能是一项靠着天份挥洒的艺术,必须是一项工程。我对本书的看法初初阅读本书,屡屡感觉书中所列的许多重构目标过于平淡,重构步骤过于琐屑。这些我们平常也都做、习

6、惯大气挥洒的动作,何必以近乎枯燥的过程小步前进?然后,渐渐我才体会,正是这样的小步与缓步前进,不过激,不躁进,再加上完整的测试配套〔是的,测试之于重构极其重要),才是「不带来破坏,不引入臭虫」的最佳保障。我个人其实不敢置信有谁能够乖乖地按步遵循实现本书所列诸多被我(从人的角度〉认为平淡而琐屑的重构步骤。我个人认为,本书的最大价值,除了呼吁对软件质量的追求态度,以及对重构「工程性」的认识,最终最重要的价值还在于:建立起吾人对于「目前和未来之自动化重构工具」的基本理论和实现技术上的认识与信赖。人类眼中平淡琐屑的步骤,正是自动化重构工具的基础。机器缺乏人类的「大局观」智慧

7、,机器需要的正是切割为一个一个极小步骤的指令。一板一眼,一次一点点,这正是机器所需要的,也正是机器的专长。本书第14章提到,Smalltalk开发环境已含自动化重构工具。我并非Smalltalkguy,我没有用过这些工具。基于技术的飞快滚动(或我个人的孤陋寡闻),或许如今你已经可以在java,C++等面向对象编程环境中找到这一类自动化重构工具。软件技术圈内,重构(refactoring)常常被拿来与设计模式(designpatterns)并论。书籍市场上,《Refactoring》也与《Designpatterns》齐名。GoF曾经说『设计模式为重构提供了目标』

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。