2025-03-03
Preparatory Refactoring 建议在实现变更之前先进行重构,使变更更容易。重构可能很复杂,但由于它保持了语义不变,因此比变更本身更容易评估。
当前的 LLM 在没有明确计划的情况下,不会以这种方式分解变更。它们会尝试一次性完成所有工作。它们有时也表现得像那些过于热心的初级工程师,过分遵循童子军原则,在做出改变的同时不断清理不相关的内容。审查 LLM 的变更很重要,为了使审查更容易,所有的重构都应该提前作为单独的变更提案进行。
理想情况下,应该指示 LLM 不要进行无关的重构(注意:根据经验,Cursor Sonnet 3.7 在遵循指令方面并不出色,所以有时效果不如预期)。或者,可以对 LLM 预期要修改的代码进行预检查,给 LLM 一个机会在真正做出变更之前进行它想要的重构。有时,指示模型遵循良好实践(如为代码添加显式类型注释)的上下文可能会使这个问题变得更糟,因为可以说模型被指示要添加注释。准确确定 LLM 应该编辑的代码范围也会有所帮助。