pdf文档 Adventures with Legacy Codebases: Tales of Incremental Improvement

4.34 MB 77 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
文档探讨了在遗留C++代码库中逐步改进的挑战与经验。通过引入ASAN、UBSAN和TSAN 等静态分析工具,尝试发现并清理未定义的行为和Intel特定的假设。然而,全面产品测试中遇到了挑战,如构建系统的差异、不同语言标准、第三方库版本不一致、预编译头文件、古怪的遗留词汇类型、全局命名空间解决方案、不同的错误处理策略和代码风格等问题。此外,还涉及了代码格式化和测试覆盖率的提升。
AI总结
《Adventures with Legacy Codebases: Tales of Incremental Improvement》这篇文章主要探讨了在遗留C++代码库中进行逐步改进的经验和挑战,以下是核心内容的总结: ### 改进方法与工具 1. **静态分析工具**:通过逐步引入地址sanitizer(ASAN)和未定义行为sanitizer(UBSAN)来发现代码中的未定义行为和Intel假设问题。TSAN(线程sanitize)用于全产品测试。 2. **代码格式化**:强制使用`.clang-format`以统一代码风格,通过CI验证Formatting的正确性。 3. **测试与重构**:增加测试覆盖率,通过重构使代码更易测试。 ### 遗留代码的挑战 1. **技术债务**: - 不同的构建系统、语言标准和第三方库版本。 - 头文件预编译、全局命名空间、错误处理策略和代码风格的差异。 -Legacy代码中的“奇怪词汇”类型。 2. **实际案例**:文中提到了一个拥有超过1300万行代码的开源项目,其中包含Boost、Skia、libPNG、libXML2等库。 3. **其他警示故事**: - 代码 linting、类型检查和单元测试的复杂性。 - 代码重构的风险,强调“5年后X%的代码会被重写”。 ### 总结与展望 - 遗留代码的改善需要逐步进行,通过工具和技术手段发现和解决问题。 - 重构的核心目标是确保新代码的质量,这是改善遗留代码库的关键。 这篇文章为开发人员提供了在处理遗留代码时的实际经验和启示,强调了逐步改进和工具支持的重要性。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 65 页请下载阅读 -
文档评分
请文明评论,理性发言.