CodeQuality

代码质量的主要关注点

  • 可靠性
    • 输入问题
    • 输出问题
      • 不完整
      • 缺失
      • 错误时刻的正确结果
      • 错误的格式
    • 逻辑问题
      • 偏差为一的错误与循环迭代
      • 被忽视的极端情况
      • 被遗漏的情况,条件测试或步骤
      • 被遗漏的方法
      • 多余的功能
      • 对需求的误解
    • 计算问题
      • 不正确的算法或计算
      • 表达式中错误的操作数
      • 表达式中不正确的运算符
      • 运算符优先级问题
      • 溢出,下溢和符号转换错误
    • 并行性与时序问题
    • 接口问题
      • 不正确的例程或参数
      • 没有测试返回值
      • 未做错误探查或恢复
      • 资源泄漏
      • 面向对象功能的误用
    • 数据处理问题
      • 不正确的数据初始化
      • 引用错误的数据变量
      • 越界引用
      • 不正确的下标使用
      • 不正确的比例或数据单位
      • 错误的数据打包与解包
        • 序列化与反序列化
      • 不一致的数据
    • 容错
      • 管理策略
      • 空间冗余
      • 时间冗余
      • 可复原性
  • 安全性
    • 脆弱代码
    • 缓冲区溢出
    • 竞态条件
    • 问题API
      • 容易出现缓冲区溢出的函数
      • 格式字符串漏洞
      • 路径和命令行解释器元字符漏洞
      • 临时文件
      • 不适合做加密用途的函数
      • 可篡改数据
    • 不可信输入
    • 结果验证
    • 数据与特权泄漏
      • 数据
      • 特权
      • 分离特权代码
        • MPI
    • 木马
    • 第三方工具
  • 时间性能
    • 测试技术
      • 负载描述
      • 受限于
        • IO任务
        • 内核的任务
        • CPU的任务与剖析工具
    • 算法复杂性
    • 独立的代码
    • 与操作系统交互
    • 与外设交互
    • 非故意交互
    • 缓存
  • 空间性能
    • 数据
    • 内存组织
    • 内存层级结构
      • 主存及其高速缓存
      • 磁盘缓存和后备存储器
      • 交换区和基于文件的磁盘存储
    • 进程/操作系统接口
      • 内存分配
      • 内存映射
      • 数据映射
      • 代码映射
      • 访问硬件资源
      • 进程间通信
    • 堆内存管理
      • 堆碎片
      • 堆剖析分析
      • 内存泄漏
      • 垃圾回收
    • 栈内存管理
      • 栈帧
      • 栈空间
    • 代码
      • 设计
      • 编码
      • 构建
  • 可移植性
    • 操作系统间
    • 硬件与处理器架构
      • 数据类型的属性
      • 数据存储
      • 特定于机器的代码
    • 编译器与语言扩展
      • 编译器错误
    • 图形用户界面GUI
    • 国际化与本地化
      • 字符集
      • 区域
      • 消息
  • 可维护性
    • 测量可维护性
      • 相关指数
      • OO的度量
      • 包相关性度量
    • 可分析性
      • 一致性
      • 表达式格式化
      • 语句格式化
      • 命名惯例
      • 语句级注释
      • 版本注释
      • 视觉结构: 块与缩进
      • 表达式,函数以及方法的长度
      • 控制结构
      • 布尔表达式
      • 可辨认性与内聚性
      • 依赖和耦合
      • 代码块注释
      • 数据声明注释
      • 恰当的标识符名字
      • 依赖的位置
      • 不确定性
      • 可复查性
    • 可变化
    • 稳定性
      • 封装与数据隐藏
      • 数据抽象
      • 类型检查
      • 编译时断言
      • 运行时检查和查看时断言
    • 可测试性
      • 单元测试
      • 集成测试
      • 系统测试
      • 测试覆盖度分析
      • 偶发性测试
    • 开发环境的影响
      • 增量构建
      • 调整构建性能
  • 浮点运算
    • 浮点数表示
      • 量度误差
      • 舍入
      • 内存格式
      • 规格化和隐含的一位
      • 阶码偏移
      • 负数
      • 反向规格化数
      • 特殊值
    • 舍入
    • 溢出
    • 下溢
    • 消去
    • 合并
    • 无效运算

代码质量的参考资料

  • 代码质量 http://book.douban.com/subject/2342995/
  • 相关支持工具
    • 静态代码分析工具
      • checkstyle
      • findbug
      • PMD
    • 自动重构工具


创建@

2014-09-22

最后修改@

2014-09-22

相同类目/Categories