`
fangang
  • 浏览: 881859 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:38965
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:68957
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:410922
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:93701
社区版块
存档分类
最新评论

我的新书终于要出来啦

阅读更多
我的新书《大话重构》终于要出来啦!这是一本讲咱程序员应该怎样开发高质量代码的书,它用大量精彩的故事,讲解高质量的代码是怎样一步一步开发出来,其设计的过程、心理的历程、遇到的问题、解决的思路……

这是一本解惑的书,它通过故事向你阐述许多深邃难懂的设计难题;这又是一本故事会,它将那些枯燥的技术问题通过故事娓娓道来。它让你告别游击队转变为正规军,远离劣质代码走向精妙设计,真正明白专业级的软件开发是怎样的,真正明白重构是怎样一步一步进行的。

你也许会问,设计高质量的代码跟重构有什么关系呢?为什么你一边在谈高质量的代码设计,一边又在谈重构?其实我们一直在谈高质量的代码,它已经成为许多人的梦想,但似乎总是距离这个梦想十分遥远。在《大话重构》这本书里,我为大家找到了一条通往这个梦想的最佳途径,那就是重构。通过书中讲解的重构方法,大大降低了设计难度,使你轻轻松松就可以开始高质量的软件设计。为此,我提出了高效重构七步曲,面对实践不卡壳。

然而,此时的你也许并不是在开发一个新系统,而是在维护一套遗留系统。遗留系统!让人头大的名词。没有关系,本书让遗留系统维护不再是你的梦魇,它让你迅速读懂代码、正确地做出设计、一步步改善系统,让你最终可以喝着咖啡、哼着小曲,轻松地享受编程生活。
最后,当你读完本书,你会发现:

需求变更不再纠结,重构让你润物细无声地容纳它们;
超越代码级的重构,让你从各个层面深度领略重构之美;
自动化测试不再是梦想,重构让自动化测试走你;
重新审视熟悉而陌生的技术,将碎了一地的它们重新铆合在一起

大家可以在当当、亚马逊、京东、china-pub等网上书店搜索,也可以在豆瓣、51CTO、IT168文库等网上试读。
当当:http://product.dangdang.com/23449367.html
试读:http://wenku.it168.com/d_001416667.shtml

本书的目录:
遗留系统——软件工业时代的痛 1
第一部分 基础篇 3
重构,一个既熟悉又陌生的名词。在这里,我首先给你诠释一个完全不同的重构,让你重新理解一个最熟悉的陌生技术:
第1章 重构:改变既有代码的一剂良药 3
1.1 什么是系统重构 3
1.2 在保险索上走钢丝 4
1.3 大布局与小步快跑 5
1.4 软件修改的四种动机 6
1.5 一个真实的谎言 8
第2章 重构方法工具箱 9
2.1 重构是一系列的等量变换——第一次HelloWorld重构 9
2.2 盘点我们的重构工具箱——对HelloWorld抽取类和接口 12
第3章 小步快跑的开发模式 17
3.1 大布局你伤不起 17
3.2 小设计而不是大布局 18
3.3 小步快跑是这样玩的——HelloWorld重构完成 19
第4章 保险索下的系统重构 26
4.1 你不能没有保险索 26
4.2 自动化测试——想说爱你不容易 28
4.3 我们是这样自动化测试的——JUnit下的HelloWorldTest 29
4.4 采用Mock技术完成测试 32
第二部分 实践篇 37
当你充满激情地准备实践重构时,却发现自己在迈出第一步就卡壳了,有木有?高效可行的重构七步,让你面对实践不卡壳:
第5章 第一步:从分解大函数开始 37
5.1 超级大函数——软件退化的重灾区 37
5.2 抽取方法的实践 43
5.3 最常见的问题 45
第6章 第二步:拆分大对象 47
6.1 大对象的演化过程 47
6.2 大对象的拆分过程——抽取类与职责驱动设计 49
6.3 SRP原则与对象拆分 50
6.4 合久必分,分久必合——类的归并 52
第7章 第三步:提高代码复用率 54
7.1 顺序编程的烦恼 54
7.2 代码重复与DRY原则 55
7.3 提高代码复用的方法 56
7.3.1 当重复代码存在于同一对象中时——抽取方法
7.3.2 当重复代码存在于不同对象中时——抽取类
7.3.3 不同对象中复用代码的另一种方法——封装成实体类
7.3.4 当代码所在的类具有某种并列关系时——抽取父类
7.3.5 当出现继承泛滥时——将继承转换为组合
7.3.6 当重复代码被割裂成碎片时——继承结合模板模式
7.4 代码重复的检查工具 64
第8章 第四步:发现程序可扩展点 64
8.1 开放-封闭原则(OCP)与可扩展点设计 65
8.2 过程的扩展与放置钩子——运用模板模式增加可扩展点 68
8.3 面向切面的可扩展设计 71
8.4 其它可扩展设计 74
第9章 第五步:降低程序依赖度 78
9.1 接口、实现与工厂模式 79
9.1.1 彻底理解工厂模式和依赖反转原则
9.1.2 工厂模式在重构中的实际运用
9.2 外部接口与适配器模式——与外部系统解耦 84
9.3 继承的泛滥与桥接模式 87
9.4 方法的解耦与策略模式 90
9.5 过程的解耦与命令模式 93
9.6 透明的功能扩展与设计——组合模式与装饰者模式 95
第10章 第六步:我们开始分层了 102
10.1 什么才是我们需要的分层 102
10.2 怎样才能拥抱需求的变化 104
10.3 贫血模型与充血模型 108
10.4 我们怎样面对技术的变革 111
第11章 一次完整的重构过程 113
11.1 第一步:分解大函数 113
11.2 第二步:拆分大对象 115
11.3 第三步:提高复用率 116
11.4 第四步:发现扩展点 117
11.5 第五步:降低依赖度 119
11.6 第六步:分层 120
11.7 第七步:领域驱动设计 121
第三部分 进阶篇 123
我已经是一个重构的实践者了,但重构真的让我想说爱你不容易,太多太多的难题让我困惑让我烦恼。这里,让一个重构多年的实践者给你解惑吧:
第12章 什么时候重构 123
12.1 重构是一种习惯 123
12.2 重构让程序可读 125
12.3 重构,才好复用 126
12.4 先重构,再扩展 127
12.5 变更任务紧急时,又该如何重构 129
第13章 测试驱动开发 131
13.1 测试驱动开发(TDD) vs. 后测试开发(TAD) 131
13.2 测试驱动开发与重构 134
13.3 遗留系统怎样开展TDD 142
第14章 全面的升级任务 144
14.1 计划式设计VS演进式设计 144
14.2 风险驱动设计 146
14.3 制定系统重构计划 148
第15章 我们怎样拥抱变化 149
15.1 领域才是软件系统的“心”——工资软件的三次设计演变 149
15.2 领域模型分析方法 155
15.3 原文分析法 157
15.4 领域驱动设计——使用领域模型与客户一起设计 160
15.5 在遗留系统中的应用 164
第16章 测试的困境 166
16.1 重构初期的困局 167
16.2 解耦与自动化测试 168
16.3 谁来写自动化测试程序? 171
16.4 建立自动化测试体系 174
第17章 系统重构的评价 175
17.1 评价软件质量的指标 175
17.2 怎样评价软件质量呢 178
结束语:重构改变了世界 181
附录:重构方法速查手册 182
分享到:
评论
7 楼 fangang 2014-04-25  
Hsiang 写道
亚马逊购了一本。目前项目需要重构。是属于电子商务项目,此书应该是注重实用吧??

从目录结构可见一斑,有问题你也可以与我交流:
QQ:252960745
微博:诗意联盟
6 楼 Hsiang 2014-04-25  
亚马逊购了一本。目前项目需要重构。是属于电子商务项目,此书应该是注重实用吧??
5 楼 fangang 2014-04-21  
LinApex 写道
重构会带来无尽的痛苦和麻烦

不正确地重构会带来无尽的痛苦和麻烦,所以你需要重新审视和学习
4 楼 LinApex 2014-04-20  
重构会带来无尽的痛苦和麻烦
3 楼 pgwlm 2014-04-11  
好书,必须支持!
2 楼 fangang 2014-04-09  
《大话重构》这本书的最大特点就是,虽然重构这个话题有一些大师级的经典著作,但大师们都生活在太空里的,我们追随大师感觉都是飘在半空中落不到实地,也就是无法落实到工作中。这本书恰恰相反,它没有提出任何新的概念,全都是你耳熟能详的知识,却将他们铆合成了一个整体,将它们落地,形成切实可行的方法与方案,让大家真正在工作中用起来,写出高质量的代码,逐步改善遗留系统。尽管如此,依然需要大家重新审视自己的编程习惯,做出改变。这起初确实会有些痛苦,但最终会受益良多。
1 楼 hebeili520 2014-04-08  

相关推荐

    2019-R语言新书 Advanced R Statistical Programming and Data Models

    2019-R语言新书 Advanced R Statistical Programming and Data Models_ Analysis, Machine Learning, and Visualization-Apress (2019),R语言中2019年新出来的书!!非常的好

    2009年新书位置定位技术和应用

    《2009年新书位置定位技术和应用》是一本专注于计算机位置定位技术的专业书籍,主要探讨了在21世纪初期这一领域的先进理论与实践。虽然本书为英文版,但其深入的技术讲解对于专业人士来说是宝贵的资源。由于作者并未...

    优秀资料(2021-2022年收藏)小学图书新书介绍.doc

    这正是“优秀资料(2021-2022年收藏)小学图书新书介绍.doc”这份文件所传递的核心信息。这些精选的书籍,虽然面向小学生这一特定的读者群体,但其所蕴含的深刻内涵,对于所有年龄段的人来说,都是一份宝贵的精神...

    吴恩达新书machine learing yearning 28-30节

    通过这种方式,可以得到不同训练集大小下的开发集错误率,并在图表上表示出来。 3. 通过学习曲线评估模型性能:在理想情况下,随着训练集大小的增加,开发集的错误率应当呈现下降趋势。这有助于我们了解模型在不同...

    MIS讲义(第3章)-新书版.ppt

    在此模式中,数据服务层独立出来,由专门的数据库管理系统管理,而用户界面和业务逻辑则分布在客户端。这种模式使得数据处理更加分散,提高了系统性能和可扩展性。 3. **三层客户/服务器计算模式**:进一步细化C/S...

    TCP IP详解卷1协议 英文版 第2版 [(美)KevinR.Fall,W.RichardStevens 著] 2012年版.7z.004

    TCP IP详解卷1协议 英文版 第2版 [(美)KevinR.Fall,W.RichardStevens 著] 2012年版.7z.001...我也有中文版电子版,因为是去年出版的新书,就不放出来。需要的跟我联系。 这个不免费,抱歉我以为资源分可以选0呢。。

    TCP IP详解卷1协议 英文版 第2版 [(美)KevinR.Fall,W.RichardStevens 著] 2012年版.7z.003

    TCP IP详解卷1协议 英文版 第2版 [(美)KevinR.Fall,W.RichardStevens 著] 2012年版.7z.001,文档太大,一共5个,前三个2分,后面两个免费...我也有中文版电子版,因为是去年出版的新书,就不放出来。需要的跟我联系。

    TCP IP详解卷1协议 英文版 第2版 [(美)KevinR.Fall,W.RichardStevens 著] 2012年版.7z.005

    TCP IP详解卷1协议 英文版 第2版 [(美)KevinR....我也有中文版电子版,因为是去年出版的新书,就不放出来。需要的跟我联系。 抱歉,这个也免费不了,你发现,5个文档,我描述都不一样。。。,放心,这5个是配套的。

    Visual C++程序开发-范例宝典第2版书光盘源码

    4、如果你下载了其中某一个压缩包,请你到我的空间找到其他两个压缩包,要3个压缩包都下载齐全,然后放到同一个文件夹下,点击解压part01.rar就可以全解压出来了。 以上,希望对需要《Visual C++程序开发-范例宝典...

    数据分析.doc

    撰写报告是数据分析的最后一个步骤,它将整个分析过程和结果清晰地呈现出来。报告中应包含分析的目的、过程、结果及方案,以及明确的结论、建议和解决方案。一份高质量的数据分析报告应具有清晰的逻辑结构,辅以图表...

    南充人NET3.5开发的AJAX无刷新实例

    不写一句JS代码,完全用VS2008的...注意实例要在英文的文夹里测试,好像是微软的AJAX对中文支持还不太好 数据库是2005的,备份和脚本都是2005的,在DB_51aspx文件夹下 数据库配置修改default.aspx.cs中相应的字符串

    图书推荐系统-基于Web,使用python的Django框架开发,数据使用Scrapy进行采集+源代码+文档说明

    比较难知道学校的新书有什么,需要有一个推送新书的程序告诉我,比如说我关注的一个关键词有python,就会在新书出现python关键字的时候给我推送特别关注的新书 3.馆藏空闲通知,有时候,我想要借的书给别人借走...

    《Java 8 入门》中文版.zip

    《Java 8 入门》中文版最新消息《ON JAVA中文版》终于上市了!推荐大家去京东购买https://u.jd.com/ZwXIEMn,新书首发,价格也比较漂亮。值得一提的是,为了与时并进,作者也增补Java 11、Java17的相关内容,很多...

    ASP.NET3.5 开发的 AJAX无刷新 留言本入门实例

    vs2008己来一年多了 AJAX的应用可以说是VS2008的一个重要组成部分 ... 直正用VS2008自带的AJAX控件的...无刷新提交并保存,并用gridview显示出来,gridview 实现无刷新分页 我想这一个例子足够用在很多方面了 ......

    基于web开发的图书销售系统的设计与实现毕业设计论文

    要想设计一个有个性化的图书销售系统。从而在书店对新书的进货,对书籍出售的 管理能力,对会员信息和图书信息的管理能力,对书店管理人员软件操作的适应时 间和操作感觉这些方面都将大大的提高。本系统正是基于这一...

    图书管理系统功能说明书

    图书管理系统功能说明书 本文档详细介绍了图书管理系统的功能设计。 图书管理系统是指一套专门用于图书馆中管理图书的软件系统,旨在帮助图书馆工作人员更好地管理图书...可以给定的一些统计条件,统计出来的信息。

    The Presentation Secrets of Steve Jobs

    Steve Jobs的演讲秘籍,2009年的新书,有兴趣学习一下,技术好还要学会如何表达出来才行。

    Java程序员如何高效学习-【育儿知识】.doc

    以前看书的时候,看完一遍再从头看,感觉就像是在看一本新书,完全没有印象。看似自己学了不少,其实真正掌握到的,可能只有很少的一部分。高效学习需要有计划、有目标、有实践和有总结。 高效学习需要认清自己、...

Global site tag (gtag.js) - Google Analytics