• C++20代码整洁之道:可持续软件开发模式实践(原书第2版)
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

C++20代码整洁之道:可持续软件开发模式实践(原书第2版)

34.83 2.7折 129 全新

仅1件

北京通州
认证卖家担保交易快速发货售后保障

作者[德]斯蒂芬·罗斯(Stephan Roth)

出版社机械工业出版社

出版时间2023-05

版次1

装帧其他

上书时间2024-11-18

甜橙书店

五年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 [德]斯蒂芬·罗斯(Stephan Roth)
  • 出版社 机械工业出版社
  • 出版时间 2023-05
  • 版次 1
  • ISBN 9787111725268
  • 定价 129.00元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 352页
  • 字数 476千字
【内容简介】
本书全面更新至C
  20,介绍如何使用现代C
  编写可维护、可扩展和可持久的软件。对于每一个对编写整洁的C
  代码感兴趣的开发人员、软件架构师或团队领导来说,这本书都是必需的。如果你想自学编写整洁的C
  代码,本书也正是你需要的。本书旨在帮助所有级别的C
  开发人员编写可理解的、灵活的、可维护的和高效的C
  代码。即使是经验丰富的C
  开发人员,也将受益匪浅。
【作者简介】


技术评审员简介

致谢

章 引言1

1.1 软件熵2

1.2 为什么使用c++3

1.3 整洁的代码4

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

1.5 本书适合的读者6

1.6 本书使用的约定6

1.6.1 扩展内容7

1.6.2 注意事项、提示和警告7

1.6.3 示例代码7

1.7 相关和代码库8

1.8 uml图9

第2章 构建安全体系10

2.1 测试的必要10

2.2 测试入门12

2.3 单元测试14

2.4 关于质量保证16

2.5 良好单元测试的原则16

2.5.1 单元测试代码的质量16

2.5.2 单元测试的命名17

2.5.3 单元测试的独立18

2.5.4 一个测试一个断言19

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

2.5.6 不对getter和setter做单元测试20

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

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

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

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

2.5.11 测试必须快速执行24

2.5.12 如何设计测试的输入数据25

2.5.13 测试替身27

第3章 原则31

3.1 什么是原则31

3.2 保持简单和直接原则32

3.3 不需要原则33

3.4 避复制原则33

3.4.1 关于避复制原则的知识34

3.4.2 构建抽象有时很困难34

3.5 信息隐藏原则37

3.6 高内聚原则40

3.7 松耦合原则42

3.8 小心优化原则45

3.9 少惊讶原则46

3.10 童子军原则46

第4章 c++代码整洁的基本规范48

4.1 良好的命名49

4.1.1 名称应该不言自明50

4.1.2 使用领域中的名称52

4.1.3 选择适当抽象级别的名称53

4.1.4 避冗余的名称54

4.1.5 避晦涩难懂的缩写54

4.1.6 避匈牙利命名法和命名前缀55

4.1.7 避相同的名称用于不同的用途57

4.2 注释57

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

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

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

4.2.4 不要写块注释59

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

4.3 函数66

4.3.1 只做一件事情68

4.3.2 让函数尽可能小69

4.3.3 函数命名70

4.3.4 使用容易理解的名称71

4.3.5 函数的参数和返回值72

4.4 c++项目中的c风格代码83

4.4.1 使用c++的string和stream来替代c风格的char*83

4.4.2 避使用printf()、sprintf()、gets()等85

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

4.4.4 使用c++类型转换代替c风格类型转换91

4.4.5 避使用宏92

第5章 现代c++的概念95

5.1 资源管理95

5.1.1 资源申请即初始化97

5.1.2 智能指针98

5.1.3 避显式的new和delete104

5.1.4 管理专有资源105

5.2 move语义106

5.2.1 什么是move语义107

5.2.2 左值和右值的关系108

5.2.3 右值引用109

5.2.4 不要滥用move语义111

5.2.5 零原则111

5.3 编译器是你的搭档115

5.3.1 自动类型推导116

5.3.2 编译时的计算119

5.3.3 模板变量121

5.4 不允许出现未定义行为123

5.5 type-rich编程124

5.6 熟悉使用的库132

5.6.1 熟练使用133

5.6.2 使用boost140

5.6.3 应该了解的其他库141

5.7 正确处理异常和错误142

5.7.1 患于未然142

5.7.2 从字面上讲,例外是异常146

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

5.7.4 用户自定义异常148

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

5.7.6 注意catch的正确顺序150

5.8 接设计150

5.8.1 attribute151

5.8.2 concept:模板参数的要求155

第6章 模块化编程159

6.1 模块化的基础160

6.1.1 模块设计的原则160

6.1.2 小结162

6.2 面向对象163

6.2.1 面向对象思想164

6.2.2 类的设计原则165

6.3 模块200

6.3.1 #include的缺点200

6.3.2 使用模块来解决202

6.3.3 底层实现203

6.3.4 使用模块的三种方案204

6.3.5 模块的影响207

第7章 函数式编程208

7.1 什么是函数式编程209

7.1.1 什么是函数210

7.1.2 纯函数和非纯函数211

7.2 现代c++中的函数式编程212

7.2.1 基于模板的函数式编程212

7.2.2 仿函数214

7.2.3 绑定包装和函数包装221

7.2.4 lambda表达式223

7.2.5 通用lambda表达式225

7.2.6 lambda模板226

7.3 函数228

7.4 管道与范围适配器233

7.5 整洁的函数式编程代码236

第8章 测试驱动开发238

8.1 传统单元测试的缺点239

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

8.2.1 tdd的流程240

8.2.2 tdd示例:罗马数字的代码招式243

8.3 tdd的优势261

8.4 不应该使用tdd的场合262

第9章 设计模式和惯用法266

9.1 设计原则与设计模式267

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

9.2.1 依赖注入模式268

9.2.2 适配器模式280

9.2.3 策略模式281

9.2.4 命令模式286

9.2.5 命令处理模式289

9.2.6 组合模式293

9.2.7 观察者模式296

9.2.8 工厂模式300

9.2.9 门面模式302

9.2.10 货币类模式304

9.2.11 特例模式306

9.3 什么是惯用法310

附录 uml简要指南321

参文献338

【目录】
第1章 引言1

1.1 软件熵2

1.2 为什么使用C  3

1.3 整洁的代码4

1.4 C  11—新时代的开始5

1.5 本书适合的读者6

1.6 本书使用的约定6

1.6.1 扩展内容7

1.6.2 注意事项、提示和警告7

1.6.3 示例代码7

1.7 相关网站和代码库8

1.8 UML图9

第2章 构建安全体系10

2.1 测试的必要性10

2.2 测试入门12

2.3 单元测试14

2.4 关于质量保证16

2.5 良好单元测试的原则16

2.5.1 单元测试代码的质量16

2.5.2 单元测试的命名17

2.5.3 单元测试的独立性18

2.5.4 一个测试一个断言19

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

2.5.6 不对Getter和Setter做单元测试20

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

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

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

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

2.5.11 测试必须快速执行24

2.5.12 如何设计测试的输入数据25

2.5.13 测试替身27

第3章 原则31

3.1 什么是原则31

3.2 保持简单和直接原则32

3.3 不需要原则33

3.4 避免复制原则33

3.4.1 关于避免复制原则的知识34

3.4.2 构建抽象有时很困难34

3.5 信息隐藏原则37

3.6 高内聚原则40

3.7 松耦合原则42

3.8 小心优化原则45

3.9 少惊讶原则46

3.10 童子军原则46

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

4.1 良好的命名49

4.1.1 名称应该不言自明50

4.1.2 使用领域中的名称52

4.1.3 选择适当抽象级别的名称53

4.1.4 避免冗余的名称54

4.1.5 避免晦涩难懂的缩写54

4.1.6 避免匈牙利命名法和

   命名前缀55

4.1.7 避免相同的名称用于

   不同的用途57

4.2 注释57

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

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

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

4.2.4 不要写块注释59

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

4.3 函数66

4.3.1 只做一件事情68

4.3.2 让函数尽可能小69

4.3.3 函数命名70

4.3.4 使用容易理解的名称71

4.3.5 函数的参数和返回值72

4.4 C  项目中的C风格代码83

4.4.1 使用C  的string和stream来

   替代C风格的char*83

4.4.2 避免使用printf()、sprintf()、

   gets()等85

4.4.3 使用标准库的容器而不是使用

   C风格数组88

4.4.4 使用C  类型转换代替C风格

   类型转换91

4.4.5 避免使用宏92

第5章 现代C  的高级概念95

5.1 资源管理95

5.1.1 资源申请即初始化97

5.1.2 智能指针98

5.1.3 避免显式的new和delete104

5.1.4 管理专有资源105

5.2 move语义106

5.2.1 什么是move语义107

5.2.2 左值和右值的关系108

5.2.3 右值引用109

5.2.4 不要滥用move语义111

5.2.5 零原则111

5.3 编译器是你的搭档115

5.3.1 自动类型推导116

5.3.2 编译时的计算119

5.3.3 模板变量121

5.4 不允许出现未定义行为123

5.5 Type-Rich编程124

5.6 熟悉使用的库132

5.6.1 熟练使用133

5.6.2 使用Boost140

5.6.3 应该了解的其他库141

5.7 正确处理异常和错误142

5.7.1 防患于未然142

5.7.2 从字面上讲,例外就是异常146

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

5.7.4 用户自定义异常148

5.7.5 值类型抛出,常量引用类型

   捕获149

5.7.6 注意catch的正确顺序150

5.8 接口设计150

5.8.1 Attribute151

5.8.2 concept:模板参数的要求155

第6章 模块化编程159

6.1 模块化的基础160

6.1.1 模块设计的原则160

6.1.2 小结162

6.2 面向对象163

6.2.1 面向对象思想164

6.2.2 类的设计原则165

6.3 模块200

6.3.1 #include的缺点200

6.3.2 使用模块来解决202

6.3.3 底层实现203

6.3.4 使用模块的三种方案204

6.3.5 模块的影响207

第7章 函数式编程208

7.1 什么是函数式编程209

7.1.1 什么是函数210

7.1.2 纯函数和非纯函数211

7.2 现代C  中的函数式编程212

7.2.1 基于模板的函数式编程212

7.2.2 仿函数214

7.2.3 绑定包装和函数包装221

7.2.4 Lambda表达式223

7.2.5 通用Lambda表达式225

7.2.6 Lambda模板226

7.3 高级函数228

7.4 管道与范围适配器233

7.5 整洁的函数式编程代码236

第8章 测试驱动开发238

8.1 传统单元测试的缺点239

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

8.2.1 TDD的流程240

8.2.2 TDD示例:罗马数字的
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP