一个项目刚开始时,很多事情依靠开发者之间的默契就能推进。代码放在哪里、资源怎样命名、功能如何实现,熟悉项目的人通常知道答案。
随着代码、资产和参与者不断增加,这些隐含在个人经验里的判断,就会逐渐成为协作的障碍。同一个需求出现几种实现,相似的功能各自维护一套逻辑,已经解决过的问题换个地方再次发生。每次修改之前,都要重新理解一遍局部规则。
代码缺少架构时,持续增加功能会越来越困难。对于整个项目,缺少规范也会产生类似的问题:局部工作不断完成,整体却越来越难以理解和维护。
规范的明确程度、执行程度和演进能力,会直接影响项目能够承受多少复杂度,以及能够持续发展多长时间。
先让“正确”有共同的定义
我理解的规范驱动开发,是在动手实现之前,先明确目标、边界、约束和验收依据,并让这些约定持续参与开发过程。
对于代码,需要明确模块各自负责什么、依赖关系如何组织、公共能力由谁维护。否则,即使每个功能单独都能运行,组合起来也可能形成难以修改的结构。
对于资产,需要明确不同用途、平台和使用场景下的要求。一张贴图的尺寸是否合理,一个网格应当采用怎样的配置,都需要放在具体条件下判断。
对于场景,还需要考虑对象之间的关系。同一个资产被放在不同位置、以不同方式使用,可能带来不同的问题。检查当前对象时,也需要知道它来自哪里、为什么被检查,以及结果应该交给谁处理。
这些约定共同建立了一个基础:参与者能够用相近的标准理解需求、执行工作和判断结果。
AI 加快了实现,也放大了结构的重要性
借助 AI,我们可以更快地完成脚本、界面和局部功能。过去需要反复查阅接口、手动搭建的部分,现在可以在更短的时间内得到第一版。
与此同时,项目也会更快地积累代码和实现方式。
如果缺少统一的架构与约束,AI 可能在每次任务中给出不同的组织方式:相似功能重复实现,业务逻辑混入公共模块,临时处理逐渐变成长期依赖。单独看,每一段代码都有自己的理由;放回项目中,它们却未必能形成一致的整体。
生成速度越快,越需要明确哪些能力应当复用、哪些边界必须遵守,以及什么证据能够说明任务已经完成。
因此,我更关注怎样把项目规范转化为 AI 可以遵循的上下文:清楚的模块职责、稳定的接口、可参考的实现,以及明确的验证方式。
开发者也需要持续判断这些约束是否合理,并检查生成结果是否真正融入了已有体系。
让规范进入日常工作
规范写进文档之后,还需要找到稳定的执行方式。
有些约定适合通过接口和目录结构体现,有些适合沉淀为公共库,有些可以转化为检查规则,还有一些需要保留人工判断。
例如,当多个编辑器工具反复需要相似的界面和交互时,可以把这些能力沉淀到 Python 编辑器核心库中。后续工具沿用同一套基础能力,开发时需要重新决定的事情就会减少。
当资产要求能够明确表达时,可以通过检查工具持续验证;当问题与场景中的使用方式有关时,则需要进一步保留对象关系、使用上下文和定位信息。
这些工具让规范成为工作过程中可以使用的能力。开发者能够及时发现偏差,理解原因,并在修改之后确认问题是否得到解决。
工具本身也需要遵守这样的分工。公共库负责通用能力,具体工具负责自己的业务,检查结果保留足够的依据。规范既约束被检查的内容,也约束检查工具的实现。
规范也需要持续迭代
规范的程度,不能简单用文档数量、规则数量或者流程长度衡量。
一条有效的规范,需要能够被理解、被执行,也需要能够解释它适用的范围。对于暂时无法覆盖的情况,应当有明确的边界;对于合理的例外,应当能够记录原因。
项目早期,可以先建立最关键的约定:模块边界、基础资产要求、公共能力的使用方式,以及完成任务的最低验收条件。随着真实问题出现,再逐步补充和调整。
新增一条规范时,也应当追问:它解决了什么反复出现的问题?执行成本是否合理?结果能否指导下一步处理?
规范需要跟随项目一起成长。长期无人维护、无法验证或者已经脱离实际需求的规则,同样会增加开发负担。
我希望通过这些实践,逐步形成一种更稳定的开发方式:用规范建立共同判断,用公共能力减少重复工作,用 AI 加快实现,再通过工具和实际使用持续反馈。
当项目规模扩大时,我们仍然能够解释它为什么这样组织,知道问题应该在哪里解决,也能够在已有基础上继续迭代。这样的规范,才真正支撑项目走得更远、做得更大。