SuperAPI AI 工具集

no-slop-code

编程与开发

查看项目

更新于 10-20 20:39

技能介绍

No slop code 是一套编写约定,用于约束代码、测试、文档和面向用户的文本,目标是减少冗余、虚假防御与无用抽象。若 AGENTS.md 对本主题另设约定,以 AGENTS.md 为准。

代码方面,约定列举了常见“废料”与替代做法:重复下一行行为的注释应删除,并通过重命名变量或抽取函数让代码自述;在禁止注释的项目中解释原因的注释,应把理由放进命名、测试名或 ADR;对不可能发生的情况做检查(如创建 db 后立刻 if (!db) throw)应删除,信任类型与不变量,只在边界(用户输入、文件、网络、环境)校验;真实边界缺检查时,应在边界加 schema 或解析器,并为坏输入写测试,必需资源缺失时快速失败,不得静默创建空资源;无人使用的函数、依赖、导出、模板或表应删除,或与首个调用方同一步加入;仅有一个调用方的抽象应内联,等第二个调用方出现再抽取;用类型断言或抑制指令(as T、(T)x、@ts-ignore、# type: ignore)压制检查器的做法,应改用类型守卫收窄或在源头修正类型;同一查找或业务规则被复制到多个处理器或层时,在加入第二份副本时抽取一个 helper,若两个层都要应用同一规则则两层都测;掩盖原因的兜底错误处理应改为处理预期错误,其余交给错误处理器和日志。

测试方面,测试必须在行为破坏时失败;每个修复都要确认新测试在没有该修复时会失败。测试辅助函数要像真实客户端一样工作,保留过期状态或跳过步骤的 helper 可能让测试因错误原因通过。能计算出的细节不要断言硬编码值(如依赖种子数据规模的 id)。安全控制至少需要一个扮演攻击者的测试,而不只是预期路径。对不可信值(请求头、表单字段)使用允许列表校验,拒绝列表会放行所有意外值,如大小写差异、重复头、未知值。

文本方面,面向用户的消息必须真实,不要承诺代码并未产生的效果(已记录、已发送、已保存)。带数量的消息要在 0、1 和多个时都读得通(“1 orders”是 bug),应使用单复数形式,或采用“Deleted: 1”这类标签。文档须在同一次提交内保持同步:README、AGENTS.md、spec、plan、环境变量表。若 spec 或 plan 比它所描述的代码还长,值得怀疑;应删掉重复表格、重述的决策,以及读者能从代码或另一份文档获得的内容。

提交前,用以下问题通读一次 diff:删掉某一行是否毫无损失?若是则删。每个新符号在本次提交中是否都有调用方?每个检查是否都在边界,且每个边界都被检查?是否有文本承诺了代码并未做到的事?

适用场景为日常编码、代码评审与提交前自检;限制在于这是一套约定文本,不提供自动化工具或强制检查机制,具体落地依赖项目自身的 AGENTS.md 与评审流程。