技术债务治理
问题
项目积累了大量技术债,如何系统性治理?
答案
债务分类
| 类型 | 示例 | 优先级 |
|---|---|---|
| 稳定性 | 崩溃率高、内存泄漏 | P0 |
| 架构 | 模块耦合、God ViewController | P1 |
| 工程化 | 无 CI、无代码规范 | P1 |
| 代码质量 | 重复代码、命名混乱 | P2 |
| 依赖 | 过时的三方库 | P2 |
治理方法
Boy Scout Rule
// 每次修改文件时,顺手改善一点
// 改之前:
func getData() -> Any { ... }
// 改之后(明确返回类型):
func getUserList() -> [User] { ... }
量化指标
| 指标 | 工具 | 目标 |
|---|---|---|
| 代码覆盖率 | Xcode Coverage | 核心模块 > 60% |
| 技术债务数 | JIRA/Notion 看板 | 每季度减少 20% |
| SwiftLint 告警 | CI 集成 | 趋势下降 |
| 编译时间 | Xcode Build Timeline | < 3min |
常见面试问题
Q1: 怎么说服业务方投入时间还技术债?
答案:用数据说话。展示技术债的影响:崩溃率影响留存、编译慢影响研发效率、无测试导致线上事故。将技术优化和业务目标绑定(如「优化启动速度 → 提升次日留存 2%」),让业务方理解 ROI。