最近在使用AI编码的过程中发现效率并没有达到预期
场景1:保存轨迹数据的操作未能形成内聚,部分逻辑分散于不同方法中,导致录制任务的执行流程不完整:1. 生成轨迹和视频分片数据 -> 2. 预处理视频和轨迹数据 -> 3. 保存视频录制数据。我期望AI在存储生成的数据至文件时,按照正确的顺序进行操作,优先进行第一步,随后再进行第二步,缺少预处理环节必然导致错误的结果。再次调试并修复这一问题耗费了半个小时。
场景2:当解决了第一问题后,在执行第三步时出现失败,因为视频地址无法找到。为何找不到呢?这是因为iOS每次启动都会更改路径,因此需要提前进行预处理。因此,在整个项目中,无论是在代码中还是数据库中,都存在可用地址与错误地址的矛盾,每次使用之前都需要确认。AI无法确定何时是正确的,何时是错误的。虽然AI编码只花费了大约半小时,但我花了两个半小时解决这两个问题。
反思
- 代码内聚性的缺失: AI 在接到“保存文件”指令时,它会忠实地执行该指令,但它缺乏对业务流程完整性的“先验知识”或“上下文感知”。它不知道“保存”这个动作在你的业务场景中隐含了“必须先预处理”这一前置条件。AI 倾向于“原子化”地理解和执行任务,除非被明确告知依赖关系。软件设计原则中的“高内聚,低耦合”在这里受到了挑战。一个高内聚的模块应该封装完成单一职责所需的所有逻辑。当保存视频录制数据方法没有将预处理视频和轨迹数据这一必要步骤包含在内时,这个方法的内聚性就降低了。这不仅给人类程序员带来了维护困难(容易遗忘前置步骤),也给AI制造了理解障碍。AI 无法轻易“猜到”这种隐式的业务流程。
- 概念混乱与状态管理不明确: AI 无法区分一个字符串(文件地址)在特定时间点的语义和有效性。它看到的是数据,而不是这个数据背后的状态和规则。除非有明确的逻辑或元数据指示如何验证和更新这些地址,否则AI会盲目使用它获取到的任何地址。缺乏“单一事实来源” (Single Source of Truth): 对于文件路径,如果系统中没有一个明确的机制来获取“当前绝对有效”的路径,那么无论是人还是AI,都容易出错。
深刻反思与未来方向:
- 隐含规则(预处理和全路径)对AI编码是又严重的创伤的,会导致AI编码出来的结果不可用。
- AI是个放大器,可以放大开发者的效率,但它也会放大现有代码库中的问题。
- “可解释性”与“可调试性”: 当AI生成的代码出现问题时,如果原始架构混乱,那么定位和修复问题的难度会急剧增加。