科技
类型
7.8
豆瓣评分
可以朗读
语音朗读
394千字
字数
2012-07-01
发行日期
展开全部
主编推荐语
本书重点讨论代码的非功能特性,深入讲述代码如何满足重要的非功能性需求,如可靠性、安全性、可移植性和可维护性,以及时间效率和空间效率。
内容简介
《代码质量》精选自Jolt历届获奖图书,以植根于开发实践中的独到工程思想与杰出方法论为主要甄选方向,旨在阐明程序员应如何理解与修改代码。
本书从Apache Web应用服务器、BSD UNIX操作系统和HSQLDB Java数据库等开源项目中攫取数百个小例子,并以实例为基准点,辅以理论分析,从实用的角度讲述每个专业软件开发人员能立即运用的概念和技术。
目录
- 版权信息
- 内容简介
- 出版说明 经久不息的回荡
- Preface to the Second Chinese Edition of Code Reading and Code Quality
- 原作者中文版序
- 推荐序
- 译者序
- 原书序言
- 前言
- 第1章 导论
- 1.1 软件质量
- 1.1.1 用户、制造者和管理者眼中的质量
- 1.1.2 质量属性
- 1.1.3 紧张的世界
- 1.2 如何阅读本书
- 1.2.1 排版约定
- 1.2.2 图示
- 1.2.3 图表
- 1.2.4 汇编代码
- 1.2.5 练习
- 1.2.6 补充材料
- 1.2.7 工具
- 第2章 可靠性
- 2.1 输入问题
- 2.2 输出问题
- 2.2.1 不完整输出或输出缺失
- 2.2.2 错误时刻的正确结果
- 2.2.3 错误的格式
- 2.3 逻辑问题
- 2.3.1 偏差为一的错误与循环迭代
- 2.3.2 被忽视的极端情况
- 2.3.3 被遗漏的情况、条件测试或步骤
- 2.3.4 被遗漏的方法
- 2.3.5 多余的功能
- 2.3.6 误解
- 2.4 计算问题
- 2.4.1 不正确的算法或计算
- 2.4.2 表达式中错误的操作数
- 2.4.3 表达式中不正确的运算符
- 2.4.4 运算符优先级问题
- 2.4.5 溢出、下溢和符号转换错误
- 2.5 并行性与时序问题
- 2.6 接口问题
- 2.6.1 不正确的例程或参数
- 2.6.2 没有测试返回值
- 2.6.3 未做错误探查或恢复
- 2.6.4 资源泄漏
- 2.6.5 面向对象功能的误用
- 2.7 数据处理问题
- 2.7.1 不正确的数据初始化
- 2.7.2 引用错误的数据变量
- 2.7.3 越界引用
- 2.7.4 不正确的下标使用
- 2.7.5 不正确的比例或数据单位
- 2.7.6 错误的数据打包与解包
- 2.7.7 不一致的数据
- 2.8 容错
- 2.8.1 管理策略
- 2.8.2 空间冗余
- 2.8.3 时间冗余
- 2.8.4 可复原性
- 第3章 安全性
- 3.1 脆弱代码
- 3.2 缓冲区溢出
- 3.3 竞态条件
- 3.4 问题API
- 3.4.1 容易出现缓冲区溢出的函数
- 3.4.2 格式字符串漏洞
- 3.4.3 路径和命令行解释器元字符漏洞
- 3.4.4 临时文件
- 3.4.5 不适合做加密用途的函数
- 3.4.6 可篡改数据
- 3.5 不可信输入
- 3.6 结果验证
- 3.7 数据与特权泄漏
- 3.7.1 数据泄漏
- 3.7.2 特权泄漏
- 3.7.3 Java的方案
- 3.7.4 分离特权代码
- 3.8 特洛伊木马
- 3.9 工具
- 第4章 时间性能
- 4.1 测量技术
- 4.1.1 负载描述
- 4.1.2 受限于I/O的任务
- 4.1.3 受限于内核的任务
- 4.1.4 受限于CPU的任务和剖析工具
- 4.2 算法复杂性
- 4.3 独立的代码
- 4.4 与操作系统交互
- 4.5 与外设交互
- 4.6 非故意的交互
- 4.7 缓存
- 4.7.1 一个简单的系统调用缓存
- 4.7.2 替换策略
- 4.7.3 预先计算结果
- 第5章 空间性能
- 5.1 数据
- 5.1.1 基本数据类型
- 5.1.2 聚合数据类型
- 5.1.3 对齐
- 5.1.4 对象
- 5.2 内存组织
- 5.3 内存层级结构
- 5.3.1 主存及其高速缓存
- 5.3.2 磁盘缓存和后备存储器
- 5.3.3 交换区和基于文件的磁盘存储
- 5.4 进程/操作系统接口
- 5.4.1 内存分配
- 5.4.2 内存映射
- 5.4.3 数据映射
- 5.4.4 代码映射
- 5.4.5 访问硬件资源
- 5.4.6 进程间通信
- 5.5 堆内存管理
- 5.5.1 堆碎片
- 5.5.2 堆剖析
- 5.5.3 内存泄漏
- 5.5.4 垃圾回收
- 5.6 栈内存管理
- 5.6.1 栈帧
- 5.6.2 栈空间
- 5.7 代码
- 5.7.1 设计期
- 5.7.2 编码期
- 5.7.3 构建期
- 第6章 可移植性
- 6.1 操作系统
- 6.2 硬件与处理器架构
- 6.2.1 数据类型的属性
- 6.2.2 数据存储
- 6.2.3 特定于机器的代码
- 6.3 编译器与语言扩展
- 6.3.1 编译器错误
- 6.4 图形用户界面(GUI)
- 6.5 国际化与本地化
- 6.5.1 字符集
- 6.5.2 区域
- 6.5.3 消息
- 第7章 可维护性
- 7.1 测量可维护性
- 7.1.1 可维护性指数
- 7.1.2 面向对象程序的度量
- 7.1.3 包的相关性度量
- 7.2 可分析性
- 7.2.1 一致性
- 7.2.2 表达式格式化
- 7.2.3 语句格式化
- 7.2.4 命名惯例
- 7.2.5 语句级注释
- 7.2.6 版本注释
- 7.2.7 视觉结构:块与缩进
- 7.2.8 表达式、函数以及方法的长度
- 7.2.9 控制结构
- 7.2.10 布尔表达式
- 7.2.11 可辨认性与内聚性
- 7.2.12 依赖和耦合
- 7.2.13 代码块注释
- 7.2.14 数据声明注释
- 7.2.15 恰当的标识符名字
- 7.2.16 依赖的位置
- 7.2.17 不确定性
- 7.2.18 可复查性
- 7.3 可变性
- 7.3.1 识别
- 7.3.2 分离
- 7.4 稳定性
- 7.4.1 封装与数据隐藏
- 7.4.2 数据抽象
- 7.4.3 类型检查
- 7.4.4 编译时断言
- 7.4.5 运行时检查和查看时断言
- 7.5 可测试性
- 7.5.1 单元测试
- 7.5.2 集成测试
- 7.5.3 系统测试
- 7.5.4 测试覆盖度分析
- 7.5.5 偶发性测试
- 7.6 开发环境的影响
- 7.6.1 增量构建
- 7.6.2 调整构建性能
- 第8章 浮点运算
- 8.1 浮点数表示
- 8.1.1 量度误差
- 8.1.2 舍入
- 8.1.3 内存格式
- 8.1.4 规格化和隐含的一位
- 8.1.5 阶码偏移
- 8.1.6 负数
- 8.1.7 反向规格化数
- 8.1.8 特殊值
- 8.2 舍入
- 8.3 溢出
- 8.4 下溢
- 8.5 消去
- 8.6 合并
- 8.7 无效运算
- 附录A 源代码致谢人员名单
- 参考文献
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。