代码质量(Code Quality)
1 From Books
1.1 Rules From <The Art Of UNIX>
1.2 Rules From <Clean Code>
1.3 Rules From <Building Secure and Reliable Systems>
1.4 Rules From <TDD>
2 From Experience
2.1 名副其实
- 不要在Free里做Malloc事情
- 用可读的函数, 变量名称, 代替非必要的注释
- 复杂的算法, 用注释高层描述实现
2.3 针对接口编程
2.4 断言与Debug断言
- 断言只做读和验证
- Debug断言只做读, 调用const类函数, 以及Inject类非Const函数
2.5 Code Review
- 控制Patch规模, 400L
- 控制Review速度, 每小时限制在500L以内
- 一次Review时间不要超过60minutes
- Submitter先Review自己的提交
- 测试代码也需要仔细看, 理解测试目的
- CheckList
- 维护和谐关系, 不同观点会有碰撞
2.6 分层的, 完整的测试
2.6.1 UT
- 面向UT设计, 好的代码是可测的
- 清晰, 明确的输入输出
- 清晰的代码结构, 函数定义
- 维护类内部状态, 性能, 错误, 事件等数据, 用作UT验证
- UT最佳实践
- Fast
- Deterministic(or Repeatable, Stability)
- 结果是明确的, 稳定的
- 测试是可重入的
- 测试稳定, 不会概率性失败
- Boundary
- Coverage
- Readable
- 代码可读性
- 结果可读性: 复杂case, 前置条件检测成功后, 再检测后续结果
2.6.3 FT(CD)
- 单物理机, 多服务多进程协作
- 测试功能正确性, 完整性
- 测试升级, 回滚, 版本兼容性
- 组件异常审批测试(DISK, SERVER下线, 扩容等)
2.6.4 E2E
- 物理环境测试集群
- 功能测试, 压力测试, 性能测试
- 故障注入测试
- 预埋海量数据, 验证雪崩后的行为
2012-2020 Copyright© YANYG
Powered by Emacs Orgmode