重构--改善既有代码的设计 - (EPUB全文下载)
文件大小:1.6 mb。
文件格式:epub 格式。
书籍内容:
重构--改善既有代码的设计
作者:Martin Fowler,Kent Beck,John Brant ,William Opdyke ,Don Roberts
翻译:侯捷、熊节
Martin Fowler和本书另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。本书解释重构的原理(principles)和最佳实践方式(best practices),并指出何时何地你应该开始挖掘你的代码以求改善。本书的核心是壹份完整的重构名录(catalog of refactoring),其中每壹项都介绍壹种经过实证的代码变换手法(code transformation)的动机和技术。某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口。
软件工程领域的超级经典巨著,与另壹巨著《设计模式》并称"软工双雄",全美销量超过100000册,亚马逊书店伍星书。
在本书中,作者Martin Fowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。
当对象技术成为老生常谈之后——尤其在Java编程语言之中,新的问题也在软件开发社区中浮现了出来。缺乏经验的开发人员完成了大量粗劣设计,获得的程序不但缺乏效率,也难以维护和扩展。渐渐地,软件系统专家发现,与这些沿袭下来的、质量不佳的程序共处,是多么艰难。对象专家运用许多技术来改善既有程序的结构完美性与性能,已有数年之久。
译序 by 侯捷
见过铁路道班工人吗?提着手持式砸道机,机身带着钝钝扁扁的钻头,在铁道上、枕木间卖力地「砍劈钻凿」。他们在做什么?他们在使路基上的碎石块(道碴〉因持续剧烈的震动而翻转方向、滑动位置,甚至震碎为更小石块填满缝隙,以求道碴更紧密契合,提供铁道更安全更强固的体质。
当「重构」(refactoring〉映入眼帘,我的大脑牵动「道班工人+电动砸道机+枕木道碴」这样一幅联想画面。「重构」一词非常清楚地说明了它自身的意义和价值:在不破坏可察功能的前提下,借由搬移、提炼、打散、凝聚…,改善事物的体质。很多人认同这样一个信念:「非常的建设需要非常的破坏」,但是现役的应用软件、构筑过半的项目、运转中的系统,容不得推倒重来。这时候,在不破坏可察功能的前提下改善体质、强化当前的可读性、为将来的扩充性和维护性做准备、乃至于在过程中找出潜伏的「臭虫」,就成了大受欢迎的稳步前进的良方。
作为一个程序员,任谁都有看不顺眼手上代码的经验一代码来自你邻桌那个菜鸟,或三个月前的自己。面临此境,有人选择得过且过;然而根据我对「程序员」人格特质的了解,更多人盼望插手整顿。挽起袖子剑及履及,其勇可嘉,其虑未缜。过去或许不得不暴虎凭河,忍受风险。现在,有了严谨的重构准则和严密的重构手 法,「稳定中求发展」终于有了保障。
是的,把重构的概念和想法逐一落实在严谨的准则和严密的手法之中,正是这本《Refactoring》的最大贡献。重构?!呵呵,上进的程序员每天的进行式,从来不新鲜,但要强力保证「维持程序原有的可察功能,不带进新臭虫」,重构就不能是一项靠着天份挥洒的艺术,必须是一项工程。
我对本书的看法
初初阅读本书,屡屡感觉书中所列的许多重构目标过于平淡,重构步骤过于琐屑。这些我们平常也都做、习惯大气挥洒的动作,何必以近乎枯燥的过程小步前进?然后,渐渐我才体会,正是这样的小步与缓步前进,不过激,不躁进,再加上完整的测试配套〔是的,测试之于重构极其重要),才是「不带来破坏,不引入臭虫」的最佳保障。我个人其实不敢置信有谁能够乖乖地按步遵循实现本书所列诸多被我(从人的角度〉认为平淡而琐屑的重构步骤。我个人认为,本书的最大价值,除了呼吁对软件质量的追求态度,以及对重构「工程性」的认识,最终最重要的价值还在于:建立起吾人对于「目前和未来之自动化重构工具」的基本理论和实现技术上的认识与信赖。人类眼中平淡琐屑的步骤,正是自动化重构工具的基础。机器缺乏人类的「大局观」智慧,机器需要的正是切割为一个一个极小步骤的指令。一板一 眼,一次一点点,这正是机器所需要的,也正是机器的专长。
本书第14章提到,Smalltalk开发环境已含自动化重构工具。我并非Smalltalk guy,我没有用过这些工具。基于技术的飞快滚动(或我个人的孤陋寡闻),或许如今你已经可以在java,C++等面向对象编程环境中找到这一类自动化重构工具。
软件技术圈内,重构(refactoring)常常被拿来与设计模式(design patterns)并论。 书籍市场上,《Refactoring》也与《Design patterns》齐名。GoF曾经说『设计模式为重构提供了目标』,但本书作者Martin亦言『本书并没有提供助你完成所有知名模式的重构手法,甚至连GoF的23个知名模式都没有能够全部覆盖。』我们可以从这些话中理解技术的方向,以及书籍所反映的局限。我并不完全赞同Martin所言『哪怕你手上有一个糟糕的设计或甚至一团混乱,你也可以借由重构将它加工成设计良好的代码。』但我十分同意Martin说『你会发现所谓设计不再是一切动作的前提,而是在整个开发过程中逐渐浮现出来。』我比较担心,阅历不足的程序员在读过这本书后可能发酵出「先动手再说,死活可重构」的心态,轻忽了事前优秀设计的重要性。任何技术上的说法都必须有基本假设;虽然重构(或更向上说XP,eXtreme Programming)的精神的确是「不妨先动手」,但若草率行事,代价还是很高的。重型开发和轻型开发各有所长,各有应用,世间并无万应灵药,任何东西都不能极端。过犹不及,皆不可取!
当然,「重构工程」与「自动化重构工具」可为我们带来相当大幅度的软件质量提升,这一点我毫无异议,并且非常期待。
关于本书制作
此书在翻译与制作上保留了所有 ............
书籍插图:
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 重构--改善既有代码的设计 - (EPUB全文下载)