SOP Coding
SOP Coding
我不喜欢Vibe Coding
我不喜欢一句话说下来生成了几百行代码, 无用的功能和复杂的逻辑堆叠在一起.
我不喜欢让LLM赤裸的玷污我的代码库, 所以除了一些Demo项目, 或者是演示项目, 我都会谨慎的使用LLM
我曾经是狂热的Vibe Coding的支持者, 但是在越来越深入的使用之后, 我觉得LLM需要的不是上下文提供更多的信息, 而是需要上下文提供更多的限制.
现在的LLM是一份非常聪明的实习生, 聪明到比你更聪明, 更懂"写代码", 但是不懂得你的业务.
所以: 你需要的不是Vibe Coding, 而是SOP Coding.
我使用 recorder生成操作记录, 然后用SPEC-mcp生成SOP.
提供项目的上下文, 以及告诉他"做的事情", 以及一个好的指引. 剩下的就是相信LLM, 相信最聪明的AI能够带着镣铐跳舞.
换句话说: 你不能够完全详细AI, 但是你可以相信一个有着良好的指引和清晰目标以及严格束缚的AI编写的代码.
所以, 我向你推荐SOP Coding. 提供给AI一个非常切实可行的指引. 然后让他学习抽象其中的关键步骤, 然后你就可以相信他.
比起Vibe Coding想要更加解放AI的方案, 在严肃的线上项目中, 我会倾向于立下规矩, 使用SOP Coding.
SOP 示例
这是一个基于go-zero开发的示例
# SOP 模板: 添加新的API路由
## 概述
本SOP(标准操作程序)旨在指导开发人员在现有服务中添加一个新的API路由。该过程涵盖了从定义API路由、生成初始代码、到实现业务逻辑的完整流程。此模板旨在确保所有新路由的添加都遵循统一的、可重复的最佳实践。
## 循序渐进指南
### 步骤 1: 定义API路由
* **描述:** 此步骤的核心是在 `.api` 文件中定义新的API路由。这是代码生成工具识别和创建相应处理器(handler)与逻辑(logic)文件的基础。
* **操作详情:**
* 修改文件: `api/web/dsl/[service_name].api`
```diff
// 在适当的 service 块内添加新的路由定义
+ @handler [HandlerName]Handler
+ [http_method] /[route_path] ([RequestType]) returns ([ResponseType])
```
### 步骤 2: 生成代码
* **描述:** 使用 `make` 命令来触发代码生成器。此工具会根据在 `.api` 文件中的定义,自动创建或更新处理器(handler)、逻辑(logic)以及路由(routes)文件。
* **操作详情:**
```bash
# 运行此命令以生成必要的API文件
make api SERVICE_NAME=[service_name]
```
### 步骤 3: 实现业务逻辑
* **描述:** 在这一步,您需要在新生成的逻辑文件中实现具体的业务逻辑。代码生成器已经为您创建了必要的文件和函数骨架。
* **操作详情:**
* 修改文件: `api/web/internal/logic/[handler_name]_logic.go`
```go
// 在生成的函数中填充业务逻辑
func (l *[HandlerName]Logic) [HandlerName](req *types.[RequestType]) (resp *types.[ResponseType], err error) {
// TODO: 在此实现您的业务逻辑
return
}
```
## 关键分析与总结
### 关键文件原型
* **API 定义文件 (`api/web/dsl/[service_name].api`):** 这是项目的"蓝图"。所有新的API路由都必须在这里定义。它是代码生成器的输入,决定了后续生成文件(如处理器和逻辑文件)的结构。
* **处理器文件 (`api/web/internal/handler/[handler_name]_handler.go`):** 该文件负责解析传入的HTTP请求,并将其传递给相应的逻辑文件进行处理。它通常是自动生成的,并且在大多数情况下不需要手动修改。
* **逻辑文件 (`api/web/internal/logic/[handler_name]_logic.go`):** 这是实现业务逻辑的核心文件。所有的数据处理、与数据库的交互以及其他核心功能都应在此文件中实现。
### 文件关系模式
* API路由的生命周期始于 `.api` 定义文件。
* `make api` 命令会读取 `.api` 文件,并生成或更新相应的处理器和逻辑文件。
* 处理器文件作为请求的入口点,将请求转发给逻辑文件。
* 逻辑文件包含核心业务逻辑,并在处理完请求后返回结果。
### 主要变更与次要变更
* **主要变更 (核心逻辑):**
* 在 `.api` 文件中对路由的定义。
* 在逻辑文件中对业务逻辑的实现。
* **次要变更 (自动化生成):**
* 处理器文件的生成。
- 逻辑文件的初始框架。
- 路由文件的更新。
开发人员应将主要精力集中在核心逻辑的变更上,而次要变更则可以被视为自动化流程的结果。
Enjoy yourself.