重构

出版时间:2010  出版社:人民邮电出版社  作者:Martin Fowler  页数:428  译者:熊节  
Tag标签:无  

前言

第一次听到“重构”这个词,是在2001年10月。在当时,它的思想足以令我感到震撼。软件自有其美感所在。软件工程希望建立完美的需求与设计,按照既有的规范编写标准划一的代码,这是结构的美;快速迭代和RAD颠覆“全知全能”的神话,用近乎刀劈斧砍(crack)的方式解决问题,在混沌的循环往复中实现需求,这是解构的美;而Kent Beck与Martin Fowler两人站在一起,以XP那敏捷而又严谨的方法论演绎了重构的美——我不知道是谁最初把refactoring一词翻译为“重构”,或许无心插柳,却成了点睛之笔。 我一直是设计模式的爱好者。曾经在我的思想中,软件开发应该有一个“理想国”——当然,在这个理想国维持着完美秩序的,不是哲学家,而是模式。设计模式给我们的,不仅仅是一些具体问题的解决方案,更有追求完美“理型”的渴望。但是,Joshua Kerievsky在那篇著名的《模式与XP》(收录于《极限编程研究》一书)中明白地指出:在设计前期使用模式常常导致过度工程(over-engineering)。这是一个残酷的现实,单凭对完美的追求无法写出实用的代码,而“实用”是软件压倒一切的要素。从一篇《停止过度工程》开始,Kerievsky撰写了“Refactoring to Patterns”系列文章。这位犹太人用他民族性的睿智头脑,敏锐地发现了软件的后结构主义道路。而让设计模式在飞速变化的网络时代重新闪现光辉的,又是重构的力量。 在一篇流传甚广的帖子里,有人把《重构》与《设计模式》并列为“Java行业的圣经”。在我看来这种并列其实并不准确。实际上,尽管我如此喜爱这本《重构》,但自从完成翻译之后,就再也没有读过它。不,不是因为我已经对它烂熟于心,而是因为重构已经变成了我的另一种生活方式,变成了我每天的“面包与黄油”,变成了我们整个团队的空气与水,以至于无需再到书中寻找任何“神谕”。而《设计模式》,我倒是放在手边时常翻阅,因为总是记得不那么真切。

内容概要

本书清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。  本书适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。

作者简介

作者:(美国)福勒(Martin Fowler) 译者:熊节Martin Fowler,世界软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,现为著名软件开发咨询公司ThoughtWorks的首席科学家。他的多部著作《分析模式》、《UML精粹》和《企业应用架构模式》等都已经成为脍炙人口的经典。熊节,ThoughtWorks中国公司的高级咨询师、架构师和项目经理,在大型企业应用及互联网应用的架构和管理方面拥有丰富经验。作为敏捷方法学顾问和重构专家,他拥有在各种技术平台、编程语言、软件形态的项目中实施重构的丰富经验,并曾主持极具挑战性的超大规模电信软件系列重构工作。

书籍目录

Chapter 1:Refactoring,a First Example 重构,第一个例子  The Starting Point 起点  The First Step in Refactoring 重构第一步  Decomposing and Redistributing the Statement Method 分解并重组slalemenl方法  Replacing the Conditional Logic on Price Code with Polymorphism 用多态代替价格条件逻辑代码  Final Thoughts 结语 Chapter 2:Principles in Refactoring 重构原则  Defining Refactoring 何谓重构  Why Should You Refactor? 为何重构  When Should You Refactor? 何时重构  What Do I Tell My Manager? 怎样说服经理  Problems with Refactoring 重构的问题  Refactoring and Design 重构与设计  Refactoring and Performance 重构与性能  Where Did Refactoring Come From? 重构的起源 Chapter 3:Bad Smells in Code(by Kent Beck and Martin Fowler) 代码坏昧  Duplicated Code 重复代码  Long Method 过长方法  Large Class 过长类  Long Parameter List 过长参数列表  Divergent Change 发散式变化  Shotgun Surgery 霰弹式修改  Feature Envy 特性依恋  Data Clumps 数据泥团  Primitive Obsession 基本类型偏执  Switch Statements switch语句  Parallel Inheritance Hierarchies 平行继承体系  Lazy Class 冗余类  Speculative Generality 理论上的一般性  Temporary Field 临时字段  Message Chains 消息链  Middle Man 中间人  Inappropriate Intimacy 过度亲密  Alternative Classes with Different Interfaces 接口不同的等效类   Incomplete Library Class 不完整的库类  Data Class 数据类  Refused Bequest 拒绝继承  Comments 注释过多 Chapter 4:Building Tests 构建测试  The Value of Self-testing Code 自测试代码的重要性  The JUnit Testing Framework Junit测试框架  Adding More Tests 添加更多测试 Chapter 5:Toward a Catalog of Refactorings 重构目录  Format of the Refactorings 重构描述的格式  Finding References 寻找引用  How Mature Are These Refactorings? 这些重构的成熟度如何  Chapter 6:Composing Methods 组合方法  Extract Method 提取方法  Inline Method 内联方法  Inline Temp 内联临时变量  *Replace Temp with Query 用查询方法代替临时变量  Introduce Explaining Variable 引入解释性变量  Split Temporary Variable 分离临时变量  *Remove Assignments to Parameters 去除参数赋值  Replace Method with Method Object 用方法对象代替方法  Substitute Algorithm 替换算法 Chapter 7:Moving Features Between Objects 在对象之间移动特性   *Move Method 移动方法  Move Field 移动字段  Extract Class 提取类  Inline Class 内联类  Hide Delegate 隐藏委托类  Remove Middle Man 去除中间人  Introduce Foreign Method 引入外加方法  *Introduce Local Extension 引入本地扩展类 Chapter 8:Organizing Data 组织数据  Self Encapsulate Field 自封装字段  Replace Data Value with Object 用对象代替数据值  Change Value to Reference 将值对象改为引用对象  Change Reference to Value 将引用对象改为值对象  Replace Array with Object 用对象代替数组  Duplicate Observed Data 重复被观察数据  *Change Unidirectional Associationto Bidirectional 将单向关联改为双向  Change Bidirectional Association to Unidirectional 将双向关联改为单向  *Replace Magic Number with Symbolic Constant 用字面常量代替魔数  Encapsulate Field 封装字段  Encapsulate Collection 封装集合  Replace Record with Data Class 用数据类代替记录  *ReplaceType Code with Class 用类代替类型码  Replace Type Code with Subclasses 用子类代替类型码  Replace Type Code with State/Strategy用State/Strategy 代替类型码  Replace Subclass with Fields 用字段代替子类 Chapter 9:Simplifying Conditional Expressions 简化条件语句  Decompose Conditional 分解条件语句  Consolidate Conditional Expression 合并条件语句  Consolidate Duplicate Conditional Fragments 合并重复的条件片段  Remove Control Flag 去除控制标志  Replace Nested Conditional with Guard Clauses 用守卫语句代替嵌套条件语句  Replace Conditional with Polymorphism 用多态代替条件语句  Introduce Null Object 引入Null对象  Introduce Assertion 引入断言 Chapter 10:Making Method Calls Simpler 简化方法调用  Rename Method 重命名方法  Add Parameter 添加参数  Remove Parameter 去除参数  Separate query from Modifier 将查询方法与修改方法分离  Parameterize Method 参数化方法  Replace Parameter with Explicit Methods 用显式方法代替参数   Preserve Whole Object 保持对象完整  Replace Parameter with Method 用方法代替参数  Introduce Parameter Object 引入参数对象  Remove Setting Method 去除设置方法  Hide Method 隐藏方法  Replace Constructor with Factory Method 用工厂方法代替构造器  Encapsulate Downcast 封装向下转型  Replace Error Code with Exception 用异常代替错误码  Replace Exception with Test 用测试代替异常 Chapter 11:Dealing with Generalization 处理泛化关系  Pull Up Field 上移字段  Pull UP Method 上移方法  Pull Up Constructor Body 上移构造器主体  Push Down Method 下移方法  Push Down Field 下移字段  Extract Subclass 提取子类  Extract Superclass 提取超类  Extract Interface 提取接口  Collapse Hierarchy 合并继承层次  Form Template Method 形成Template Method  Replace Inheritance with Delegation 用委托代替继承  Replace Delegation with Inheritance 用继承代替委托 Chapter 12:Big Refactorings(by Kent Beck and Martin Fowler) 大型重构  Tease Apart Inheritance 分解继承层次  Convert Procedural Design to Objects 将过程式设计转换为面向对象  Separate Domain from Presentation 将领域逻辑与表现分离  Extract Hierarchy 提取继承层次 Chapter 13:Refactoring,Reuse,and Reality(by William Opdyke) 重构,复用与现实  A Reality Check 现实的检验  Whv Are Developers Reluctant to Refactor Their Programs? 开发人员为何不愿重构程序  A Reality Check(Revisited) 再谈现实的检验  Resources and References for Refactoring 重构的资源和参考文献  Implications Regarding Software Reuse and Technology Transfer 对软件复用与技术传播的意义  A Final Note 结语  References 参考文献 Chapter 14:Refactoring Tools(by Don Roberts and John Brant) 重构工具  Refactoring with a Tool 使用工具重构  Technical Criteria for a Refactoring Tool 重构工具的技术标准  Practical Criteria for a Refactoring Tool 重构工具的实用标准  Wrap Up 结语 Chapter 15:Putting It All Together(by Kent Beck) 集大成 References参考文献 List of Soundbites 要点列表 Updates 更新内容 Index 索引

章节摘录

插图:现在,重构的处境也是如此。我们知道重构的好处,我们知道重构可以给我们的工作带来立竿见影的改变。但是我们还没有获得足够的经验,我们还看不到它的局限性。这一节比我希望的要短。暂且如此吧。随着更多人学会重构技巧,我们也将对它有更多了解。对你而言这意味着:虽然我坚决认为你应该尝试一下重构,获得它所提供的利益,但与此同时,你也应该时时监控其过程,注意寻找重构可能引入的问题。请让我们知道你所遭遇的问题。随着对重构的了解日益增多,我们将找出更多解决办法,并清楚知道哪些问题是真正难以解决的。数据库重构经常出问题的一个领域就是数据库。绝大多数商用程序都与它们背后的数据库结构紧密耦合在一起,这也是数据库结构如此难以修改的原因之一。另一个原因是数据迁移(migration)。就算你非常小心地将系统分层,将数据库结构和对象模型间的依赖降至最低,但数据库结构的改变还是让你不得不迁移所有数据,这可能是件漫长而烦琐的工作。在非对象数据库中,解决这个问题的办法之一就是:在对象模型和数据库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化。升级某一模型时无需同时升级另一模型,只需升级上述的分隔层即可。这样的分隔层会增加系统复杂度,但可以给你带来很大的灵活度。如果你同时拥有多个数据库,或如果数据库模型较为复杂使你难以控制,那么即使不进行重构,这分隔层也是很重要的。你无需一开始就插入分隔层,可以在发现对象模型变得不稳定时再产生它,这样你就可以为你的改变找到最好的平衡点。对开发者而言,对象数据库既有帮助也有妨碍。某些面向对象数据库提供不同版本的对象之间的自动迁移功能,这减少了数据迁移时的工作量,但还是会损失一定时间。如果各数据库之间的数据迁移并非自动进行,你就必须自行完成迁移工作,这个工作量可是很大的。这种情况下你必须更加留神类中的数据结构变化。你仍然可以放心将类的行为转移过去,但转移字段时就必须格外小心。数据尚未被转移前你就得先运用访问函数造成“数据已经转移”的假象。一旦你确定知道数据应该放在何处,就可以一次性地将数据迁移过去。

编辑推荐

重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是《重构:改善既有代码的设计》原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。《重构:改善既有代码的设计》也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。《重构:改善既有代码的设计》凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与《重构:改善既有代码的设计》最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。

图书封面

图书标签Tags

评论、评分、阅读与下载


    重构 PDF格式下载


用户评论 (总计200条)

 
 

  •   重构:改善既有代码的设计(软件开发的不朽经典) 经典书籍
  •   在当下的软件开发环境中,经常会使用他人的成果,而这些代码也许能用,但未必合乎规范,容易修改复用。这样的情况下,重构的技术手段,就成了救命稻草。重构反对推倒重来,提倡渐进改变。因为代码不是食物,怎么会腐败呢?只要你有技术能力,随便改。
  •     首先,你应该关注的是提高书写干净,毫不含糊的,可维护代码的能力。 下列书籍应该大大有助于您:
      
      测试驱动开发(肯特·贝克)
      重构(马丁·福勒)
      实现模式(肯特·贝克)
      代码大全:第二版(史蒂夫·麦康奈尔)
      Working Effectively With Legacy Code(Michael Feathers)
      Clean Code (Robert C. Martin)
      上述的读书顺序可能使有些人感到惊讶,但我敢打赌,这是最有效的阅读顺序。
  •   重构在大型项目中越来越重要,即使是普通的程序员也应该随时保持自己代码的整洁度,维持高质量的代码并不是一件简单的事,需要对OO思想的深刻理解和清晰的结构划分
  •   这本书就不用多说了, Martin Fowler的经典之作,虽然是用c++的来演说的,但是对于面向对象,以及架构的设计阐述得很好,应该是每个立志成为优秀程序员架构师的必备书籍。
    感觉书中作者对于程序的风格、设计要求几乎已经到了偏执的程度,他对代码的整理不像是一种技术,更像是一种艺术,那种对代码的审视角度更多地像是从一种工程美学去看,拒绝任何一点瑕疵、缺憾、笨拙、丑陋、bad smell,要求百分百的优雅、精致、完美。这不正像一个艺术家对自己作品至善至美的要求吗?而且他所列出的技术上的bad smell恰恰也是我平时看上去感觉别扭、丑陋、笨拙的地方,这种工程与美学、技术与艺术的相通,也许就是事物同一性的一种体现吧?
  •   我认为的阅读顺序应该是:Java编程思想-Junit(测试)-UML-设计模式-重构-重构与模式~
  •   堪称经典的一本书。挺喜欢的。例子很多。很细。反应现实软件开发存在的问题与如何重构。
  •   本书介绍了重构的一些知识,对我非常有帮助,对于一些已有代码的改善起到了巨大的作用
  •   重构是软件开发迭代过程中不可或缺的一步,很赞的一本书
  •   最近在接触一个很老的系统,老板一直希望将代码处理的更完善,想到重构系统,可是又没有这方面的经验,网上查了下找到这本书,非常不错的书,值得一读,在重构中可以让一个程序员学到更多的知识,强烈推荐!
  •   作为一名程序员,以前很少在代码的重构上花费很大的力气,但是这也导致自己总是感觉提升很慢却找不到原因,读了这本书之后才有一种茅塞顿开的感觉,才真正的找到问题的根源,在这里作者循序渐进的讲解,让我如梦初醒,我自己也感觉到作为一名程序员自己的路还很长,自己要学的还很多。
  •   稍微看了一些,这本书对于程序员来说很值得看,里面讲了很多代码重构的一些建议,对于提升代码的质量还是有很大帮助的!
  •   重构,改善代码的好书
  •   买这本书的时候是冲着它的顶顶大名去的,看完之后果然受益匪浅,打算在需要的时候再读几遍。虽然现在的项目代码有些“坏味道”,但是现在不是重构的良好时机。这也是遵循书中所提到的“两顶帽子”原则。如果没有把握去重构的话,就不要重构。但是总体来说,这本书还是让我开拓了眼界,增长了见识。唯一不足的地方就是翻译,有点中国式的教条~~
  •   这本书让我学习了如何重构,现在的项目有大量冗余的代码,这本书给我帮助很大。非常赞的一本书
  •   大师的作品,很不错的代码重构类书籍
  •   代码重构,编码人员必备
  •   对于想学习重构的学习者来说是一本必不可少的书,看完后,编写代码规范很多,很喜欢!
  •   虽然着重点是代码重构,不过对于新手也是一本好书,告诉你怎样的代码是坏代码,怎么写才是好代码
  •   代码整理: 重构好书籍
  •   重构,从事代码工作的人,在经历编码的初阶迈向下一境界的一道坎~ 希望能够继续在这条路上走下去,走的更好,走出精彩!
  •   早就接触到了这本书,以前都是随便看看。没认为他有多重要。 看完设计模式,觉得,自己就掌握了一切,最后发觉,自己越来越迷茫。 大的框架和原理是比较明白。 但是小细节,就是不断的重构。自己真的力不从心,无从下手。 再回头看这本书,感觉不错。
  •   重构这本书真的是不朽经典,估计成书于2000年以前,到现在还流行,足见经典;clr via C#,深入讲解,专业性太强了
  •   书不错,以前看了设计模式,现在来看重构,感觉少了点什么,比如依赖注入,我现在还没在书里面找到这个设计模式应该怎么使用。
  •   确实是不朽经典,我们很多同事都购买了,作为参考书来进行重构软件和学习讨论。
  •   重构和设计模式是java的两本圣经,ITeye创始人范凯强力推荐此书。这本书对你的影响是潜移默化的,经常读一读对自己很有好处
  •   刚收到书,摸起来纸张不错,就是每页的文字比较少啊,既然是经典就向经典学习,计划在两个星期看完!手头上正好有个需要重构的项目,边看边实践!
  •   重构,现在写软件一定要注意重构,还要结合设计模式来学习
  •   我现在做的个项目是将原有的系统进行升级,因为需要在原有的系统上进行修改,这本书给了一些重构的思想和方法。比如说,当现有的程序结构不再适合现有的功能,我们就来重构现有的结果,让他适应新的需求,虽然比较麻烦,但是这好处很多,一是方便理解,二是好的结构提供了更好的扩展。
  •   很多地方都用的到,例如经典的测试驱动开发都用重构。在eclipse插件中有部分集成的功能
  •   这本书是重构中的经典篇章
  •   主要是讲重构和模式一类的,新手可能看不懂,不过多看几遍就好了
  •   读完此书,你会觉得重构原来普通程序员也可以!
  •   经典就是经典,很适合放到身边,有重构要求时就翻一翻。
  •   一个程序员可以不学开发语言,但不能不学习重构。
  •   重构是每个程序员肯定会用到的。
  •   软件开发的不朽经典+设计模式,学到很多东西
  •   这是一本关于重构的很经典的书,不可不读。
  •   其实,我现在是做C++,但是买了这本java的重构的书,可见他有多么经典。。。
  •   重构的经典
  •   重构--做过的程序员才是好程序员
    重构--读过的经理才能做好经理
    重构--享受过的软件才是好软件
  •   指导重构 可以反思设计
  •   很不错,对学习重构有很大帮助
  •   非常好的一本书,其实是原2003年的再版 区别不大,此版本改为侯杰一人翻译,此书对重构的思想由浅入深
  •   好书,立足于细节,不光是重构,平时写新代码时也可以参考
  •   特别实用的一本重构方面的书
  •   很好,一直放桌上,有时间就翻翻,作者对重构简直是无以复加了
  •   重构的方法写的很透彻
  •   对重构的描述很全很详细,大量的重构方法值得学习。。
  •   真正理解重构的意义就从它开始了
  •   不用怕,重构就好了。
  •   很详细的重构思维
  •   大致的看了下,感觉比较好,之前自己重构比较混乱。
  •   重构方面的好书
  •   重构是我们coder不得不做的,而且是必须要努力、经常去做的!
  •   (软件开发的不朽经典
  •   喜欢这种经典的书,有很多的java代码例子,如果有设计模式的基础,结合来看的话效果更好!
  •   如果你很不幸是个程序员,如果你更不幸是个面向过程的开发人员,如果你十分不幸你的东家之前的代码写的非常糟乱。。。你懂的
  •   如何改善既有代码,从外观到设计。
  •   这本书帮助我们重新修改自己的代码,不仅仅是提高效率,也是在帮助提高整个项目的开发效率,并有助于后续的可能的开发
  •   这是任何一个有几年代码经验的人都应该读的书,书中教给我们的一些方法让我们更清晰地了解设计的精髓,以及如何在设计完成之后继续改进它的设计。
    对所有即将写代码,正在写代码,或写过代码的人,这本书都有非常大的借鉴意义。
  •   软件开发的经典之作!
  •   适合想要改善代码质量,熟悉OO思想的人使用
  •   虽然是做****开发的,语言是不一样的,但软件开发的思想是相通的,所以我买了这本书。现在正在读。感觉不错。
  •   本书比较适合有一定代码积累量的程序员,如果没写过多少代码对里面的一些东西可能体会不到。
  •   非常值得学习并付诸工作实践,能够大大提高软件开发效率。
  •   大致看了几个章节. . 确实很经典,对代码优化很有帮助.
    很不错..
  •   久闻此书大名,今日一读,果然非同凡响。

    通过这本书学到了很多的编码思想,对我写代码影响非常大。看了这本书后,更注重代码的可维护性和可扩展性了。

    不是吹,这本书,是我近年来收获最大的一本计算机书之一。

    强烈推荐。

    另外,这本书虽然是以Java语言描述的,但无关紧要,我现在玩的都是C++,也不因此影响阅读。
  •   书中很多总结对代码设计和编写人员很适用,都是平时容易忽视的细节,看了才知道自己有不少地方都需要提高和改进。很好,推荐!
  •   书很经典,尤其对写过一些代码后,对照书所讲思考写过代码,收获会更大。
  •   大致看了30多页..
    的确简单易懂
    还有..我感觉这本书压缩一下..真美多少页...
    里面好多代码重复.只是一个类稍做修改.就把整个类再粘贴一遍.而且行间距.很大.
    不过正是因为这样才更易于阅读吧

    这本书就像太极拳.异懂.难通
  •   经典中的经典,不错不错,可以从更高层的角度看待自已的代码。
  •   不错,一代经典,代码用Java写的,刚好适用。
  •   这本书确实包含了很多关于编程上的好的知道,
    有兴趣的人可以看看:代码整洁之道,代码大全
  •   书的内容以java为语言讲述如何避免代码的重复修改。
  •   很值得推荐的一本书,Java的代码示例,但是就算不会Java应该也能看看,毕竟思想才是最重要的!
  •   书中的代码优化方式真是让我受益匪浅,学习
  •   开发人员必备,看了写代码更直观
  •   么有看,就是翻了翻,书不错,纸质什么的都挺好的,需要经常写代码的人应该会很喜欢
  •   普通程序员进阶到高手必须修炼的秘籍
  •   虽然看的有些迷糊,但是颇有感觉,设计代码的能力又提高了.
  •   曾几何时,沉沦在“腐烂”的代码**堆中,不知何处是我前进的方向。发现了这本书,它给我脱离苦海的信心和方法。我现在就在践行如下原则:“永远保持你走时比来时更干净”。靠什么达到呢?这本书会给你答案。可能你会更辛苦,但只要坚持,你会笑到最后。
  •   这本书没什么说的,要想写出整洁,逻辑性强的代码。你可以看看,保你受益匪浅。
  •   这书是教人怎么写很美的代码
  •   10行代码一页,这书很浪费好纸张啊
  •   优化代码,提高代码质量,很优秀的书
  •   这本书很不错,跟国外的数据思维模式上可能不太一样,读的过程中明显能感觉的是中国人写的书籍,但是可能因为都是中国人的思维模式,读起来更容易理解,国外的书可能更注重思想,这本书则更注重于现实工作中的实践和应用。总的来书,好书,值得入手
  •   除了示例代码是Java不太喜欢以外,都很棒。
  •   代码即是艺术。看似简单,奥妙无穷
  •   当你面对庞大而复杂的代码无法下手的时候你可以静下心读一读,会有很大的收获。
  •   代码洁癖者专用
  •   学习java一段时间之后对自己的代码进行反思~
  •   里面的代码是Java写的。。还以为是C#版的,还好大部分代码相通
  •   在会写代码的基础上,写出好的代码,你值得拥有
  •   规范代码、提高代码编写能力
  •   看过后,挺不错的,就是里面代码重复过多,也不知道是不是为此增加页数,还是其他的。
  •   写的很好,代码占的篇幅太大
  •   不错的质量,代码布局看上去让人比较舒服,内容当然OK了
  •   设计模式齐名的经典之作。
  •   经典之作,不朽传奇,书的质量很好,正版书。。。。
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7