正版现货新书 C++20代码整洁之道:可持续软件开发模式实践(原书第2版) 9787111725268 [德]斯蒂芬·罗斯(Stephan Roth)
全新正版现货,以书名为准,放心购买,购书咨询18931383650朱老师
¥
81.53
6.3折
¥
129
全新
库存41件
作者[德]斯蒂芬·罗斯(Stephan Roth)
出版社机械工业出版社
ISBN9787111725268
出版时间2022-08
装帧平装
开本16开
定价129元
货号12527881
上书时间2024-10-08
商品详情
- 品相描述:全新
- 商品描述
-
目录
第1章 引言1<br />1.1 软件熵2<br />1.2 为什么使用C++3<br />1.3 整洁的代码4<br />1.4 C++11—新时代的开始5<br />1.5 本书适合的读者6<br />1.6 本书使用的约定6<br />1.6.1 扩展内容7<br />1.6.2 注意事项、提示和警告7<br />1.6.3 示例代码7<br />1.7 相关网站和代码库8<br />1.8 UML图9<br />第2章 构建安全体系10<br />2.1 测试的必要性10<br />2.2 测试入门12<br />2.3 单元测试14<br />2.4 关于质量保证16<br />2.5 良好单元测试的原则16<br />2.5.1 单元测试代码的质量16<br />2.5.2 单元测试的命名17<br />2.5.3 单元测试的独立性18<br />2.5.4 一个测试一个断言19<br />2.5.5 单元测试环境的独立初始化20<br />2.5.6 不对Getter和Setter做单元测试20<br />2.5.7 不对第三方代码做单元测试21<br />2.5.8 不对外部系统做单元测试21<br />2.5.9 如何处理数据库的访问21<br />2.5.10 不要混淆测试代码和产品代码22<br />2.5.11 测试必须快速执行24<br />2.5.12 如何设计测试的输入数据25<br />2.5.13 测试替身27<br />第3章 原则31<br />3.1 什么是原则31<br />3.2 保持简单和直接原则32<br />3.3 不需要原则33<br />3.4 避免复制原则33<br />3.4.1 关于避免复制原则的知识34<br />3.4.2 构建抽象有时很困难34<br />3.5 信息隐藏原则37<br />3.6 高内聚原则40<br />3.7 松耦合原则42<br />3.8 小心优化原则45<br />3.9 最少惊讶原则46<br />3.10 童子军原则46<br />第4章 C++代码整洁的基本规范48<br />4.1 良好的命名49<br />4.1.1 名称应该不言自明50<br />4.1.2 使用领域中的名称52<br />4.1.3 选择适当抽象级别的名称53<br />4.1.4 避免冗余的名称54<br />4.1.5 避免晦涩难懂的缩写54<br />4.1.6 避免匈牙利命名法和<br /> 命名前缀55<br />4.1.7 避免相同的名称用于<br /> 不同的用途57<br />4.2 注释57<br />4.2.1 让写代码像讲故事一样57<br />4.2.2 不要为易懂的代码写注释58<br />4.2.3 不要通过注释禁用代码59<br />4.2.4 不要写块注释59<br />4.2.5 特殊情况的注释是有用的62<br />4.3 函数66<br />4.3.1 只做一件事情68<br />4.3.2 让函数尽可能小69<br />4.3.3 函数命名70<br />4.3.4 使用容易理解的名称71<br />4.3.5 函数的参数和返回值72<br />4.4 C++项目中的C风格代码83<br />4.4.1 使用C++的string和stream来<br /> 替代C风格的char*83<br />4.4.2 避免使用printf()、sprintf()、<br /> gets()等85<br />4.4.3 使用标准库的容器而不是使用<br /> C风格数组88<br />4.4.4 使用C++类型转换代替C风格<br /> 类型转换91<br />4.4.5 避免使用宏92<br />第5章 现代C++的高级概念95<br />5.1 资源管理95<br />5.1.1 资源申请即初始化97<br />5.1.2 智能指针98<br />5.1.3 避免显式的new和delete104<br />5.1.4 管理专有资源105<br />5.2 move语义106<br />5.2.1 什么是move语义107<br />5.2.2 左值和右值的关系108<br />5.2.3 右值引用109<br />5.2.4 不要滥用move语义111<br />5.2.5 零原则111<br />5.3 编译器是你的搭档115<br />5.3.1 自动类型推导116<br />5.3.2 编译时的计算119<br />5.3.3 模板变量121<br />5.4 不允许出现未定义行为123<br />5.5 Type-Rich编程124<br />5.6 熟悉使用的库132<br />5.6.1 熟练使用<algorithm>133<br />5.6.2 使用Boost140<br />5.6.3 应该了解的其他库141<br />5.7 正确处理异常和错误142<br />5.7.1 防患于未然142<br />5.7.2 从字面上讲,例外就是异常146<br />5.7.3 如果不能恢复,则尽快退出147<br />5.7.4 用户自定义异常148<br />5.7.5 值类型抛出,常量引用类型<br /> 捕获149<br />5.7.6 注意catch的正确顺序150<br />5.8 接口设计150<br />5.8.1 Attribute151<br />5.8.2 concept:模板参数的要求155<br />第6章 模块化编程159<br />6.1 模块化的基础160<br />6.1.1 模块设计的原则160<br />6.1.2 小结162<br />6.2 面向对象163<br />6.2.1 面向对象思想164<br />6.2.2 类的设计原则165<br />6.3 模块200<br />6.3.1 #include的缺点200<br />6.3.2 使用模块来解决202<br />6.3.3 底层实现203<br />6.3.4 使用模块的三种方案204<br />6.3.5 模块的影响207<br />第7章 函数式编程208<br />7.1 什么是函数式编程209<br />7.1.1 什么是函数210<br />7.1.2 纯函数和非纯函数211<br />7.2 现代C++中的函数式编程212<br />7.2.1 基于模板的函数式编程212<br />7.2.2 仿函数214<br />7.2.3 绑定包装和函数包装221<br />7.2.4 Lambda表达式223<br />7.2.5 通用Lambda表达式225<br />7.2.6 Lambda模板226<br />7.3 高级函数228<br />7.4 管道与范围适配器233<br />7.5 整洁的函数式编程代码236<br />第8章 测试驱动开发238<br />8.1 传统单元测试的缺点239<br />8.2 作为颠覆者的测试驱动开发240<br />8.2.1 TDD的流程240<br />8.2.2 TDD示例:罗马数字的<br /> 代码招式243<br />8.3 TDD的优势261<br />8.4 不应该使用TDD的场合262<br />第9章 设计模式和习惯用法266<br />9.1 设计原则与设计模式267<br />9.2 常见设计模式及应用场景267<br />9.2.1 依赖注入模式268<br />9.2.2 适配器模式280<br />9.2.3 策略模式281<br />9.2.4 命令模式286<br />9.2.5 命令处理模式289<br />9.2.6 组合模式293<br />9.2.7 观察者模式296<br />9.2.8 工厂模式300<br />9.2.9 门面模式302<br />9.2.10 货币类模式304<br />9.2.11 特例模式306<br />9.3 什么是习惯用法310<br />附录 UML简要指南321<br />参考文献338
精彩内容
本书全面更新至C++20,介绍如何使用现代C++编写可维护、可扩展和可持久的软件。对于每一个对编写整洁的C++代码感兴趣的开发人员、软件架构师或团队领导来说,这本书都是必需的。如果你想自学编写整洁的C++代码,本书也正是你需要的。本书旨在帮助所有级别的C++开发人员编写可理解的、灵活的、可维护的和高效的C++代码。即使是经验丰富的C++开发人员,也将受益匪浅。
— 没有更多了 —
以下为对购买帮助不大的评价