展开全部

主编推荐语

本书重点讨论代码的非功能特性,深入讲述代码如何满足重要的非功能性需求,如可靠性、安全性、可移植性和可维护性,以及时间效率和空间效率。

内容简介

《代码质量》精选自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 源代码致谢人员名单
  • 参考文献
展开全部

评分及书评

评分不足
1个评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。