重构——改善既有代码的设计 中文完整版

所需积分/C币:50 2014-11-02 22:37:59 12.41MB PDF
收藏 收藏
举报

晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。
重构 改既有代码的设计 refactoring 1g Improving the design of Existing Code Martin Fowler著 以及 Kent Beck, John Brant, Wi:liam Opdyke Don roberts对最后二章的贡献) 侯捷/熊节合译 Refactoring: Improving the deslgn of Existing code (IsbN 0-201-48507-23 Martin fowler Copyright oIyyy Addison Wesley longman, Inc. Original english language edition Published by Addison Wesley longman, Inc All rights reserved. Translation edition published by pearson education asla ltd and CHINA ELECTRIC POWER PRESS, Copyright 0 2003. 本芧酮译版出 Pear sur! Education授权屮国电丿出版社在区境内(香港、澳特别行政区利台湾地区除外) 独家出版、发行。 木经出晒者节计可,不得以仁何方式复制或抄袭本的仟何部分 本扦庶财有 Pearson Educati防伪标签,椭签者不得销 北京巾版权离作权合同登i图字:01-2024741号 For sale and distribution in the Pcoplcs republic of China exclusively (excluding Taiwan, Hong Kong SAR and Maca sar 仅限于中华人民只和国境内(不包屮国乔港、疾门特别行政区和中国合湾地区悄售发行 图书在版编目(C|P)数据 重构:改善既有代码的设计(关)福萬( Fower. M冫芒;吳捷,熊节译 北京:中国吧力出版补,2003(软件T稈系列 SBN7-583-1|5545 1.点 ②侯.熊 代码一程序设计ⅣTP31.11 屮国版本书馆C数捐核字{2003)第057350号 责任编辑:程璐乔晶 书名;重柯:改善觑有代码的没训 原蓍:(美) Martin fowl 翻译:侯使熊节 出版发行:中国电力出版社 地址:北点市二里河路6号邮蚊编码:1004 电话:(0108515918传具:、01083518169 印刷:汇鑫卬务限公司印刷 开本:787×102116 印张:29字数:540千字 书号:ISBN7508315545 版次:203年8月北京版 印次:203年8月第次印刷 定价:68.0几 Refactorings(重构列表 Add parameter冻加參数) 275 Change bidirectional association to Unidirectional(将双向关联改为单向)200 〔 hange reference o Value(将引用对家改为值对象 183 Change unidirectional A sociation to bidirectional(将单向关联改为双向)197 Change value to reference(将实值对象改为到用对象) Collapse Hierarchy(圻叠继承体系) 344 〔 nsolidate Conditional expression(合并条件式 240 Consolidate duplicate Conditional fragments(合并重复的条件斤段 243 Convert Procedural Design to Objects(将过捏化设计转化为对象设计) Decompose Conditional(分的条式 Duplicate Observed Data(复制「被监视效据」 Encapsulate colection(封毖群集) Encapsulate Downcast(封装向下转型」动作) 上 capsulate Field、封装值域) Extract class(提炼关 149 Extract Hicrarchy提炼继承体系 375 Extract interfacc〔炼按 41 Extract me-hod(提炼数) Extract subclass(提炼子类 33县 Extrac Superclass(提炼超类 Form Template Method塑迮模板函数 345 Hide Delegate(隐藏「委托关系 157 Hide method(隐藏函数 303 Inline class(将类内联化 Inline method(将函数内联化) 117 nline Temp(将时变显内联化 l19 Introduce assertion(引入断言 Introduce Explaining variable(引入解释生变l 124 Introduce Foreign Method(引入外加函数) Introduce local extension(引入本地打) 164 ntroduce Null Objec(引入N山对象 ntroduce Parameter Object(引入参数对象冫 Move. fiel(搬移值或) 146 Move method(掇移孑数 l42 Parameterize method(令数携带参数) 283 Preserve Wholc object(保捋对象宄整) Refactoring Improving the Design of Existing Code Pull Up Constructor Body(构道函数本汴上移〉 Pull tp Fiald(值域上:拉 320 Pull up method(函数拉 Push down field(域下移 329 Push dowa method(丞数下移) Remove assignments to parameters栘除对参数的赋值动作 13 Remove Control flag(孩除控制标: 245 Remove middle man(移除间人 Remove paraneter〈移除参数 Remove Setting Method(移除设值的数 3(0 Rename method(距新命名函数) 273 Replace Aray with Object(以对象取八组〕 180 Replace Conditional with Polymorphism(以多念取代条件式 Replace Constructor with Fac: ory Method(以工厂方法取代构造函数 Replace Data Value with Object(以对象取代效掉侍) l75 Replace delegation with Inhcritanec(以继承取代委 Replace error Code with Exception(以斤常取代针误吗) 310 Replace Exception wilh Test〈以测试取代异常 315 Replace Inheritance with Delegation(以委托取代继承) 352 Replace Magic Number with Symbolic Constan:(以字面常吊墩代癜法数)204 Replace method wiih Method object I以题数对象取代函数 Replace nested Conditional with Guard Clauses(以卩语句取代嵌套条什式〉250 eplace Parameter with Explicit Methods(以明硝的数取代李数) Replace Parameter w: th Method(以函数取代参数 Replace record with Data Class(以数据类取代让录 Replace Subclass with Fields(以值域取代了类 232 Replace Temp with Query(以查洵取代临时变量 Replace Type Code with Clas以类取代型别) 218 Replace Type Code with Stale/Strategy(以 Statel Strategy取代型别码 Replace Ty? e Code with Subclasses(以了英取代型别码) 223 Self encapsulate ficld(自封装域) 71 Separate domain from Presinlalion(将領域和表述显示分离 Separate Query :rom Modifier(将查询库数和修改函数分离 Split Temporary variable(剖舯临时变宝 Substitute algorithm(替换你的算法 Tease Apart Inheritance〈杭理分解继承体系) Refactaring-Improving the Design of Existing Code Edited by Foxit Reader Copyright(c) by Foxit Corporation, 2005-2010 For Evaluation Only 侯桃译序 译序 by候提 看 过铁路道址1人吗?提占「持式砸道札,机妄带着钝钝刷扁的钴头,在铁上 枕木间夾力地「砍劈钻凿」。他们在做什么?他们在攸蹄上的碎仁块(道碴)因 扑续剧的震动而觀转方向、滑动位置,甚至震碎为更小石块填满縫隙,以求道磁 史紧密契合,提供铁道更安全更强的体质。 当「重构.( refactoring)映入跟布,我的大脑牵动「道班工人+电动砸道机+枕木 迸碴」这样一幅联想仙面。「重构|词非常清楚地说明了它自身的意义科价值: 在不破坯可寒攻能的前提下,借出搬移、捷冻、打散、凝聚…改善事物的体质 很多人认同这样个信念:「非常的建设需要非常的破坏,但是现役的应用软件 构筑过丬的项目、运转中的系统,容不得推倒重来。这时候,在不破不可察功能的 前提下改善体质、强化当新的可读性、为将的扩充性和维护性做准备、乃全」在 过程中找凵潜伏的「臭虫」,就成了人受欢迎的稳步前进的良方 作为一个稈序员,任诎都看不順眼上代吗的经验一代码来自你邻桌排个菜 的,或二个月前的上心面临此境,有人选择得过且过;然而根据我对「程序员 人格特质的了解,更多人盼望西亍整顿。挽起袖子剑及履,其勇可嘉,期虑未缜。 过去或许得个暴虎凭河:忍受风险.现在,有了严谨的重构准则和严密的重构于 法,「稳定中求发展」终于有了保障 是的,把构的概念和想法逐一落实在严译的准则和产密的手法之口,正是这本 Rrn》的最人页献,重构:!即p,十进的程序员每天的进行式,从米不新 鲜,但要强力保证「维持秤序原勻的可察功能,不带进新臭虫」,重构就不能是一 项靠着天份挥洒的兰术,必须是…项工程。 Reftacloring-Improuing the Design of Existing Code 侯捷译予 我对本书的看法 蚓训阅读木书,屡屡感觉书巾所列的许多重构目标过}平淡,重构步骤过于琐屑 这些我们平常也都做、习惯人气拌洒的动作,何必以近乎燥的过程小北前进?然 后,潮渐我才体会,正是这样的小步与绥步前进,不过激,入躁进,再加上完整的 测试配套(是的,测试之于重构极其重要),才「不带来破坏,不引入臭虫」的 最仹保障。我个人其实不敢胥信有谁能够乖乖地按步遵循实垗本书所列者多被我 从人的角度认为平淡而班屑的重构步骤。我个人认为,本#的最大价值,除了 呼叶对软件量的追求态度,以及对重构「工程性的认认,最终最重要約价值还 在子:建立起吾人对于「目前和未来之自动化重构工具」的基木理论和实现技术上 的认识与佶赖。人类眼中平淡琐屑的步骤.是自动化重构⊥具的基础。机器缺乏 人类的「大局观|智慧,机器需耍釣正是b为-个一个樾小步骤的指令。一板 眼,一次一点点,这正是机器所需要的,也止是机器的专长。 本书势14章提到, Smalltalk开发环境已含自动化重构工貝。我斗 Smalltalk guy, 我没有用过这些工具。基子技术的飞快滚动或我个人的狐陋寡闻),或许如今你 约川以在Java,C++等面向对象编程坏境中找到这类i动化重构L具 软件技术圈内,重构( refactoring)常常被拿来与设汁模式( design patterns并论 书籍市场上,《 Refactoring也与幻 Designt patterns》名。(oF曾经说『设计模式 沩重构摄供?目标!,但木书作考ⅵatin亦言「本书开没有提供助你完成所有知名 模式的重构法,甚至连F的23个知名模式都没有能够全部覆盖。」我们叫以 从这些话中理解技术的方向,以及书籍所反的局限我并不完全衔同 Martin所言 『啉怏你手上有一个糟糕約没计或甚至一团乱,你也可以借由重构将它加成设 计良好的代码。」但我「分同意 Martin说『你会发现所谓设计不再是一切动作的前 提,而是在整个开发过中逐渐浮现出来:」我比较担心,阅历不足的程序员在读 过本书后可能发酵出「先动于再说,死活可重构的心态,轻忽了事前优秀设计的 重要性任何技术上的说法都必须有基本假设;虽然重构(或夏向⊥说XP, Xtt Programming)的精神的确是「不妨先动手」,但若草率行事,代价还是很高的 重型开发和轻型开发各有所,各有应用,世间并无万应灵药,午何东西都不能极 端。犹不及,皆不可取! 当然,「重构工程」与「自动化重构工具,可为我们带来相当大幅度的软件质量提 升,这一点我亳无异议,并H非常期待每 Refactarirg-imtproving the DEsign uf Existing Code 侯捷译厅 关于本书制作 此在翻譯与作上保留了所有坏味道< bad smell)、重构( refactorIng)、设计嗅 式,( design pattem)的英文名称,并现以特殊字;仁封面内页、日录、小节 标題中相庥地绐出一个根拥字面或技术意义而做的中文泽名。各种「坏味道|名弥 尽量就其意义迒用负面字眼,如泥团,夸夸、过长,过大、过多、情结、偏执、惊 悚、犷昵、纳桤、冗贅…这些其实祁是助忙之用,与茶余饭后的谈资(以及读者 批评的根据@) 原书各小节并无序号。为参考、检索域讨论时的方便,我为译本加上了产号 木付留相当份量的英义术语,时而英中并英文为主,巾文为辅),这么做的 考显是,本读者不可能不道 class, final, reference public, package.这些简短的 Java編稆息息相关的用词,另方血,我确实认为,中文#内保留经过挑选某 些英文术语,利于整体阅读效果。 两个需要标别说明触用诃是Jv2编柱界惯用的“fla"和" method",它们闻当于 C+的" dara member利 member [unction"出于出现次数实在频繁,为降低中 黄杂程度,我把它们分别译为「值域和"函数-如果将"mehd·译为"方 沄,想忙术语突出性不高。木书将"ype"译为「型别」而非「类犁」,分是为 了中文术语之突出性:" Instance"泽为实体!而非实例,、" argument"译为”引 数j而非「实参」,们意义上约考过,「sttc值域与 reference销域l、「 reference 对象气ve对象」等等圳俣留部分英文,并选用如上笊莉殊宇体、凡此种种,相 分进入书屮您很快可以感受本书术语风格。 本书还自诸多地方采巾英并陈(中义为土,莢文为辅)方式,意在告诉读者,我们 译〕濚知白己的不足与司限,惟恐造您对中评名词的埙解或对惯,所以附 上:原文 中文版(木书)已将英文版截至2030618为止之勘误,修正于纸本, Reftactoring-Improving Fhse Desigin Df Existing Cude 保捷评序 点点感想 Martin fowler表现于原书的写作风格是:简渃,爱用代名词和略称。这使得读者 生需耍在字面上揣度推敵。我勳盼(并相信〕终剋抆术意义的反刍、屮芙术语的并 陈、中文表述的努力,中文版(木书)在阅读时间、埋解时间和记忆深度!,较之 英文版,能够为以华文为语的读者提高10倍以上的成效 本书由我和熊节先小合译。熊节负责第一个pas我责后貅作,中文版(本书 为该者来的阅读和理解上的放益,熊节居首功一说做的是第一个pas,我 从初稿质量便可看出他多次反复推敲和文字家磨的刻疫。至于整体风格、屮英术语 的选定、版面的现、乃至于全蓝技术内涵的表现,如米有任何差错,贡任都是我 的 作为一个仁息技不教育者,以及一个信息技术传播者,我在超过10年的写译历程 中.刈察了不同级别的技术书品在读书巾场上的兴衰起伏。这些近可反映大环境下 技术从业人员及学了们的某些面问和取向,我很高兴看到孜们的中文技术书籍(著 译皆含)从早明鲎盈满满的初阶言书,逐淅进化到中高阶语言用书、操作系统、 技术内核、程库/框架、再至设计分析、软件1。我很高兴否到这样的变化, 我很高兴看到《 Design fattens、《风 factoring》、Age.)、LM 《XP.之类的书在中文书籍市场十现身.并期盼它们有十言的读者: 中文版〈本书)攴援网站有一个『术语英中繁简」对照表。如果您们需砦,欢迎 访间,阏上如下,并欢迎给我任何意见。谢谢。 侯捷200618于台湾新竹 jhou@hQ,om(电子邮箱 ht/wwwjjhou.com(繁体)(术语对照老hp:www.jjhou.com/terms.htm http:/jbou.csdn.net(简体冫(术语对照表httpH/ijhou.csdn.netterins.html Refactoring-Improuing the Design of Existing Code

...展开详情
试读 127P 重构——改善既有代码的设计 中文完整版
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
cdkey91 版本是2014年的,童鞋们注意哈
2017-10-17
回复
  • 脉脉勋章

    绑定脉脉第三方账户获得
关注 私信 TA的资源
上传资源赚积分or赚钱
最新推荐
重构——改善既有代码的设计 中文完整版 50积分/C币 立即下载
1/127
重构——改善既有代码的设计 中文完整版第1页
重构——改善既有代码的设计 中文完整版第2页
重构——改善既有代码的设计 中文完整版第3页
重构——改善既有代码的设计 中文完整版第4页
重构——改善既有代码的设计 中文完整版第5页
重构——改善既有代码的设计 中文完整版第6页
重构——改善既有代码的设计 中文完整版第7页
重构——改善既有代码的设计 中文完整版第8页
重构——改善既有代码的设计 中文完整版第9页
重构——改善既有代码的设计 中文完整版第10页
重构——改善既有代码的设计 中文完整版第11页
重构——改善既有代码的设计 中文完整版第12页
重构——改善既有代码的设计 中文完整版第13页
重构——改善既有代码的设计 中文完整版第14页
重构——改善既有代码的设计 中文完整版第15页
重构——改善既有代码的设计 中文完整版第16页
重构——改善既有代码的设计 中文完整版第17页
重构——改善既有代码的设计 中文完整版第18页
重构——改善既有代码的设计 中文完整版第19页
重构——改善既有代码的设计 中文完整版第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >