热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

我的新书终于要出来啦

我的新书《大话重构》终于要出来啦!这是一本讲咱程序员应该怎样开发高质量代码的书,它用大量精彩的故事,讲解高质量的代码是怎样一步一步开发出来

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

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

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

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

最后,当你读完本书,你会发现:

需求变更不再纠结,重构让你润物细无声地容纳它们;

超越代码级的重构,让你从各个层面深度领略重构之美;

自动化测试不再是梦想,重构让自动化测试走你;

重新审视熟悉而陌生的技术,将碎了一地的它们重新铆合在一起

大家可以在当当、亚马逊、京东、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.3SRP原则与对象拆分     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


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
author-avatar
w50251898
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有