https://item.jd.com/12599914.html?dist=jd

每日新书

《C++代码整洁之道:C++17可持续软件开发模式实践》

掌握高效的现代C++编程法则;学会应用C++设计模式和习惯用法;利用测试驱动开发来创建可维护、可扩展的软件。

编辑推荐:

如果想用C++语言编写出易维护的、扩展性良好的以及生命力强的软件,那么,对于所有的软件开发人员、软件设计人员、对现代C++代码感兴趣或想降低开发成本的项目领导者来说,本书都是必需品。如果你想自学编写整洁的C++代码,那么本书也是你需要的。本书旨在通过一些示例帮助各个技术层次的开发人员编写出易懂的、灵活的、可维护的和高效的C++代码。即使你是一名资深的开发工程师,在本书中也可以找到有价值的知识点。

  如果你不关心你的代码,那么,使用任何编程语言都有可能写出庞大的、糟糕的以及难以维护的代码。但是,实际应用中的C++工程往往是糟糕的,并且有越来越坏的趋势。很多现代C++代码的风格与20世纪80年代的风格类似。

  提倡软件工艺和代码整洁之道的人,好像把C++开发人员遗忘了。网上充斥着大量代码风格很差的例子,这些例子中的代码都需要优化,但是在优化的时候,他们完全无视设计模式的基本原则以及良好代码风格的指导原则,导致最后的代码虽然高效,但是晦涩难懂。本书将告诉你如何避免这些情况的发生,以及教你如何摆脱编写C++代码的陋习。你将会发现你编写的代码会变得很高效,更重要的是,你会乐在其中。

作者简介:

斯蒂芬·罗斯(Stephan Roth)是德国汉堡一家咨询公司的系统和软件工程导师、顾问和培训师。在此之前,他在无线电侦察和通信情报系统领域做了多年的软件开发工程师、软件架构师和系统工程师。Stephan还是一位优秀的演说家及作家,目前已出版多本专业书籍。此外,他还是一个坚定的软件工艺运动支持者,关注于简洁代码开发的规范制定及实践。

目  录

译者序

关于作者

关于技术审校

致谢

第1章 简介1

1.1 软件熵2

1.2 整洁的代码4

1.3 为什么使用C++4

1.4 C++11—新时代的开始5

1.5 适合本书的读者5

1.6 本书使用的约定6

1.6.1 扩展阅读6

1.6.2 说明、提示和警告6

1.6.3 示例代码7

1.6.4 编码风格7

1.7 相关网站和代码库7

1.8 UML图8

第2章 构建安全体系9

2.1 测试的必要性9

2.2 测试入门11

2.3 单元测试13

2.4 关于QA15

2.5 良好的单元测试原则16

2.5.1 单元测试的代码的质量16

2.5.2 单元测试的命名16

2.5.3 单元测试的独立性17

2.5.4 一个测试一个断言18

2.5.5 单元测试环境的独立初始化19

2.5.6 不对getters和setters做单元测试19

2.5.7 不对第三方代码做单元测试20

2.5.8 不对外部系统做单元测试20

2.5.9 如何处理数据库的访问20

2.5.10 不要混淆测试代码和产品代码21

2.5.11 测试必须快速执行23

2.5.12 测试替身24

第3章 原则27

3.1 什么是原则27

3.2 保持简单和直接原则(KISS)28

3.3 不需要原则(YAGNI)29

3.4 避免复制原则(DRY)29

3.5 信息隐藏原则30

3.6 高内聚原则33

3.7 松耦合原则35

3.8 小心优化原则38

3.9 最少惊讶原则(PLA)39

3.10 童子军原则39

第4章 C++代码整洁的基本规范41

4.1 良好的命名42

4.1.1 名称应该自解释43

4.1.2 使用域中的名称45

4.1.3 选择适当抽象层次的名称45

4.1.4 避免冗余的名称46

4.1.5 避免晦涩难懂的缩写47

4.1.6 避免匈牙利命名和命名前缀47

4.1.7 避免相同的名称用于不同的目的48

4.2 注释49

4.2.1 让写代码像讲故事一样49

4.2.2 不要为易懂的代码写注释50

4.2.3 不要通过注释禁用代码50

4.2.4 不要写块注释51

4.2.5 特殊情况的注释是有用的53

4.3 函数56

4.3.1 只做一件事情59

4.3.2 让函数尽可能小59

4.3.3 函数命名61

4.3.4 使用容易理解的名称61

4.3.5 函数的参数和返回值62

4.4 C++工程中的C风格代码72

4.4.1 使用C++的string和stream替代C风格的char*73

4.4.2 避免使用printf()、sprintf()和gets()等74

4.4.3 使用标准库的容器而不是C风格的数组77

4.4.4 用C++类型转换代替C风格的强制转换80

4.4.5 避免使用宏81

第5章 现代C++的高级概念83

5.1 资源管理84

5.1.1 资源申请即初始化85

5.1.2 智能指针86

5.1.3 避免显式的new和delete92

5.1.4 管理特有资源92

5.2 Move语义94

5.2.1 什么是Move语义94

5.2.2 左值和右值的关系95

5.2.3 右值引用96

5.2.4 不要滥用Move97

5.2.5 零原则98

5.3 编译器是你的搭档102

5.3.1 自动类型推导102

5.3.2 编译时计算105

5.3.3 模板变量107

5.4 不允许未定义的行为108

5.5 Type-Rich编程110

5.6 了解你使用的库116

5.6.1 熟练使用<algorithm>116

5.6.2 熟练使用Boost121

5.6.3 应该了解的一些库121

5.7 恰当的异常和错误处理机制122

5.7.1 防患于未然123

5.7.2 异常即异常—字面上的意思126

5.7.3 如果不能恢复则尽快退出128

5.7.4 用户自定义异常128

5.7.5 值类型抛出,常量引用类型捕获130

5.7.6 注意catch的正确顺序130

第6章 面向对象131

6.1 面向对象思想132

6.2 抽象—解决复杂问题的关键因素133

6.3 类的设计原则134

6.3.1 让类尽可能小134

6.3.2 单一职责原则(SRP)135

6.3.3 开闭原则(OCP)135

6.3.4 里氏替换原则(LSP)136

6.3.5 接口隔离原则(ISP)146

6.3.6 无环依赖原则148

6.3.7 依赖倒置原则(DIP)151

6.3.8 不要和陌生人说话(迪米特法则)156

6.3.9 避免“贫血类”160

6.3.10 只说不问160

6.3.11 避免类的静态成员162

第7章 函数式编程164

7.1 什么是函数式编程165

7.1.1 什么是函数166

7.2.2 pure函数和impure函数167

7.2 现代C++中的函数式编程168

7.2.1 C++模板函数编程168

7.2.2 仿函数170

7.2.3 绑定和函数包装176

7.2.4 Lambda表达式178

7.2.5 通用Lambda表达式(C++14)180

7.3 高阶函数181

7.4 整洁的函数式编程代码186

第8章 测试驱动开发188

8.1 普通的旧单元测试的缺点189

8.2 测试驱动开发作为颠覆者190

8.2.1 TDD的流程190

8.2.2 TDD的一个小例子:Code Kata193

8.3 TDD的优势210

8.4 什么时候不应该使用TDD212

第9章 设计模式和习惯用法213

9.1 设计原则与设计模式214

9.2 常见的设计模式及应用场景214

9.2.1 依赖注入模式215

9.2.2 Adapter模式226

9.2.3 Strategy模式227

9.2.4 Command模式231

9.2.5 Command处理器模式235

9.2.6 Composite模式238

9.2.7 Observer模式241

9.2.8 Factory模式245

9.2.9 Facade模式248

9.2.10 Money Class模式249

9.2.11 特例模式252

9.3 什么是习惯用法255

附录A UML简要指南266

参考文献275

C++开发必备的书——《C++代码整洁之道》C++17可持续软件开发模式实践相关推荐

  1. 什么是好代码-代码整洁之道阅读笔记

    根据我所阅读的书<代码整洁之道>里的一句话: "衡量代码质量的唯一有效标准: WTF/min" 从哲学的角度讲,不得不说这真的很客观!!! 毕业不久的我也没有太多关于好 ...

  2. 【Web技术】1021- 一名合格前端工程师必备素质:代码整洁之道

    大厂技术  坚持周更  精选好文 内容出自<代码整洁之道>.Alex Kondov[1]的博文tao-of-react[2]和<Clean Code of Javascript> ...

  3. Python好书推荐《Python代码整洁之道》——编写优雅的代码

    前言 Python是当今最流行的语言之一.相对较新的领域如数据科学.人工智能.机器人和数据分析,以及传统的专业如Web开发和科学研究等,都在拥抱Python.随着时间的推移,Python有可能会发展成 ...

  4. 从插图看《代码整洁之道——程序员的职业素养》

    <代码整洁之道--程序员的职业素养>是<代码整洁之道>的作者Bob大叔的第二部作品,笔者读完2016年再版的本书后有感而发写下本文,本书2012年的版本叫<程序员的职业素 ...

  5. 重读【代码整洁之道】

    一.前言 [代码整洁之道]很经典,但也有些过时,翻译上也有些啰嗦,但总体上是好书.通过对本书核心内容的摘抄,结合自己的经验,整理了一些精简的点,这样你就省的去啃那本400多页的书了. 软件质量 = 架 ...

  6. 《代码整洁之道》(Clean Code)- 读书笔记

    一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...

  7. 2015年第11本:代码整洁之道Clean Code

    前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...

  8. 代码整洁之道(Clean Code)- 读书笔记

    Sorry, 许久未更新文章了,主要因为刚刚换了一家新公司,忙于组建团队(建设.招聘.流程.框架等)与熟悉公司业务,还有领导给的其他工作等等,实在是没有时间更新了.最近在和团队分享Bob大叔的< ...

  9. 代码整洁之道,不止于程序员需要的职业素养

    代码整洁之道,不止于程序员需要的职业素养 最近在读<代码整洁之道>这本书,分享一些我的感悟.首先得说明一下这本书是一本技术类的书籍,大部分内容讲的是纯技艺方面的知识,比如测试驱动开发.阻塞 ...

  10. 浪漫主义计算机科学家的真知灼见——《代码整洁之道》

    熟悉我的人都知道我每次写文章都要敬从当涂太白墓请来的李白三杯酒,很多人问我为什么写文章之前不拜韩愈或者苏轼反而拜成就在诗不在文的李白呢?我每次都要解释:李白是捞月的诗人,Monkey是捞月的动物,李白 ...

最新文章

  1. 智源学者朱军获2020年“科学探索奖”
  2. swift_036(Swift之第三方库SwiftyJSON篇)
  3. 深度学习核心技术精讲100篇(五)-通过CTR预估对比深度学习模型(deepfm)梯度提升模型(catboost)
  4. mysql 140824,Oracle 12c创建可插拔数据库(PDB)及用户
  5. LeetCode 404. 左叶子之和(Sum of Left Leaves)
  6. HarmonyOS之组件布局的创建和使用
  7. day32—CSS多列布局学习
  8. CCF202012-1 期末预测之安全指数
  9. 如何使用Intellij IDEA工具导入SVN项目
  10. Python学习小结---函数
  11. LeetCode() Merge Intervals 还是有问题,留待,脑袋疼。
  12. java基础的第二轮快速学习!day10
  13. js中的extend
  14. Windows10内存泄漏,分页池高分析及解决方案
  15. 除了搜岛国老师的作品,以图搜图还有什么骚操作?
  16. 将进酒:写在26岁生日这一天
  17. 如何正确回复审稿意见
  18. 更进一步!微软成为 OpenInfra 开放基础设施基金会白金会员
  19. bundle包是什么意思_bundle与package区别与联系
  20. MySQL百万数据量如何快速查询。求教

热门文章

  1. JAVA调起clearcase_Rational ClearCase和Rational ClearQuest对Java API的支持
  2. 精英网络技术论坛免杀基础
  3. 数字电路基础-逻辑门电路
  4. 译码器(24译码器,38译码器)笔记
  5. 鸿蒙跟海思是什么,华为到底还有多少麒麟9000?又一款旗舰曝光,出场即是鸿蒙...
  6. matlab排队模型和排队系统仿真
  7. 笔试12:Bootstrap知识
  8. 网络计算机装系统,网络克隆——为电脑重装系统
  9. 这样能收录,原理是用的凤凰新闻采集工具
  10. java class查看器_java class文件查看工具