本书的核心思想是通过对各方面的代码质量进行比较,使读者了解经验丰富的开发者拥有的思维模式。为了展示软件开发最佳实践,作者对一个水容器示例进行多次重构,讨论了18种实现,分别从7个方面改进代码质量:时间效率、空间效率、监控与可靠性、测试与可靠性、可读性、线程安全、可复用性。在此过程中,作者还探讨了与计算机科学、Java编程以及软件工程相关的专业话题,这些知识都有助于读者写出更好的代码。
本书面向初级和中级Java程序员,其他面向对象编程人员也能从中受益。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 你真的会写代码吗/图灵程序设计丛书 |
分类 | |
作者 | (意)马尔科·法埃拉 |
出版社 | 人民邮电出版社 |
下载 | ![]() |
简介 | 内容推荐 本书的核心思想是通过对各方面的代码质量进行比较,使读者了解经验丰富的开发者拥有的思维模式。为了展示软件开发最佳实践,作者对一个水容器示例进行多次重构,讨论了18种实现,分别从7个方面改进代码质量:时间效率、空间效率、监控与可靠性、测试与可靠性、可读性、线程安全、可复用性。在此过程中,作者还探讨了与计算机科学、Java编程以及软件工程相关的专业话题,这些知识都有助于读者写出更好的代码。 本书面向初级和中级Java程序员,其他面向对象编程人员也能从中受益。 作者简介 李强,浙江中金黄金集团CTO,曾就职于美国道富银行,历任全栈工程师、架构师、技术经理。技术涉猎广泛,在产品设计开发、架构设计、技术团队管理等方面有丰富经验。另译有《扩展jQuery》和《HTML5+JavaScript动画基础》。 目录 第一部分 准备工作 第1章 软件质量和待解决问题 1.1 软件质量 1.1.1 内部质量与外部质量 1.1.2 功能性质量与非功能性质量 1.2 主要的外部软件质量 1.2.1 正确性 1.2.2 稳健性 1.2.3 易用性 1.2.4 效率 1.3 主要的内部软件质量 1.3.1 可读性 1.3.2 可复用性 1.3.3 可测试性 1.3.4 可维护性 1.4 软件质量之间的关系 1.5 特殊的质量 1.5.1 线程安全 1.5.2 简洁性 1.6 演进示例:水容器系统 1.6.1 API 1.6.2 用例 1.7 数据的模型和表示 1.7.1 存储水量 1.7.2 存储连接 1.8 你好,容器(Novice) 1.8.1 字段和构造函数 1.8.2 getAmount和addWater方法 1.8.3 connectTo方法 1.9 小结 1.10 扩展阅读 第2章 Reference的实现 2.1 代码(Reference) 2.1.1 内存布局图 2.1.2 方法 2.2 内存需求 2.3 时间复杂度 2.4 学以致用 2.5 小结 2.6 小测验答案和练习答案 2.7 扩展阅读 第二部分 软件质量 第3章 速度的要求:时间效率 3.1 常数时间内完成加水(Speed1) 3.2 常数时间内添加连接(Speed2) 3.2.1 用循环链表来表示容器组 3.2.2 延迟更新 3.3 好的平衡:并查集算法(Speed3) 3.3.2 连接容器树 3.3.3 坏情况时间复杂度 3.3.4 摊销时间复杂度 3.3.5 可调整大小数组的摊销分析 3.4 比较各种实现 3.4.1 实验 3.4.2 理论与实践 3.5 来点儿新鲜的 3.5.1 快速插入 3.5.2 快速查询 3.5.3 让三个方法都变快 3.6 真实世界的用例 3.7 学以致用 3.8 小结 3.9 小测验答案和练习答案 3.10 扩展阅读 第4章 宝贵的内存:空间效率 4.1 稍微挤一下(Memory1) 4.2 普通数组(Memory2) 4.3 弃用对象(Memory3) 4.3.1 无对象的API 4.3.2 字段和getAmount方法 4.3.3 用一个工厂方法来创建容器 4.3.4 通过ID连接容器 4.3.5 空间复杂度和时间复杂度 4.4 黑洞(Memory4) 4.5 空间和时间的权衡 4.6 来点儿新鲜的 4.6.1 重复对象少的情况 4.6.2 重复元素多的情况 4.7 真实世界的用例 4.8 学以致用 4.9 小结 4.10 小测验答案和练习答案 4.11 扩展阅读 第5章 有自我意识的代码:通过监控实现可靠性 5.1 契约式设计 5.1.1 前置条件和后置条件 5.1.2 不变式 5.1.3 正确性和稳健性 5.1.4 检查契约 5.1.5 更广泛的情况 5.2 基于契约设计水容器 5.3 检查契约的容器(Contracts) 5.3.1 检查addWater方法的契约 5.4 检查不变式的容器(Invariants) 5.4.1 检查connectTo方法的不变式 5.4.2 检查addWater方法的不变式 5.5 来点儿新鲜的 5.5.1 契约 5.5.2 一个基线版本实现 5.5.3 检查契约 5.5.4 检查不变式 5.6 真实世界的用例 5.7 学以致用 5.8 小结 5.9 小测验答案和练习答案 5.10 扩展阅读 第6章 别对我撒谎:通过测试保证可靠性 6.1 测试的基本概念 6.1.1 测试的覆盖率 6.1.2 测试和契约式设计 6.1.3 JUnit 6.2 测试水容器(UnitTests) 6.2.1 初始化测试 6.2.2 测试addWater 6.2.3 测试connectTo方法 6.2.4 运行测试 6.2.5 衡量代码覆盖率 6.3 可测试性(Testable) 6.3.1 可控性 6.3.2 可观察性 6.3.3 隔离:切断依赖关系 6.4 来点儿新鲜的 6.4.1 提高可测试性 6.4.2 一个测试套件 6.5 真实世界的用例 6.6 学以致用 6.7 小结 6.8 小测验答案和练习答案 6.9 扩展阅读 第7章 让代码说话:可读性 7.1 关于可读性的一些观点 7.1.1 企业编码风格规范 7.1.2 可读性因素 7.2 结构性的可读性特征 7.2.1 控制流语句 7.2.2 表达式和局部变量 7.3 外部可读性特征 7.3.1 注释 7.3.2 命名 7.3.3 空白及缩进 7.4 可读的容器(Readable) 7.4.1 用Javadoc描述类的头部 7.4.2 整理connectTo方法 7.4.3 整理addWater方法 7.5 可读性的终极思考 7.6 来点儿新鲜的 7.7 真实世界的用例 7.8 学以致用 7.9 小结 7.10 小测验答案和练习答案 7.11 扩展 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。