principle-fix-root-causes
这是一条用于调试场景的原则性技能,名为“Fix Root Causes”(修复根本原因)。它主张在调试时不要只修复表面症状,而应把每个问题追溯到根本原因并在此处修复。其核心理由是:症状式修复会不断累积,每个临时绕过都会让系统更难理解,而真正的缺陷依然存在;根本原因修复虽然前期较慢,但能减少总体调试时间。该原则给出的操作模式包括:先复现问题;不断追问“为什么”直到触及根本原因;不要添加防护措施(例如用 nil 检查来消除崩溃属于症状式修复);如果某个绕过方案需要一整段注释来证明其合理性,说明代码本身有问题,应修复代码而非注释;要检查模式而非单个实例(用 grep 搜索相同模式并修复所有实例);卡住时应加插桩、加日志、读取真实错误,而不是猜测;对于“重启后失败”的问题,应先怀疑持久化状态(配置文件、缓存、锁文件、序列化状态),若清除某状态文件即可恢复正常,则优先把状态校验作为修复方向。