一门面向单人开发与小型团队的代码哲学与工程规范
——让错误无处藏身,让第一次就能跑通,让维护成本趋近于零。
---
## 0. 场景和目标
> **"代码在写完的那一秒就开始腐烂;**
> **SGR 的目标是把腐烂速度降到人类无法察觉。"**
---
## 1. 哲学三律(不可违背)
| 律 | 描述 | 违背信号 |
|---|---|---|
| **显式律** | 所有行为必须一眼能看穿,拒绝隐式副作用 | "这里应该会自动……" |
| **立即报错律** | 拼写、类型、路径、配置错误必须**当场暴毙** | 静默为空、404、白屏 |
| **单文件律** | 核心交付物尽量只有**一个文件**或**一个目录** | 需要文档才能部署 |
---
## 2. 设计七原则(可度量)
| 原则 | 量化指标 | 实现手法 |
|---|---|---|
| **零依赖** | `composer install` 步骤数为 0 | 只使用 PHP/Node/Python 内置 API |
| **零配置** | 第一次访问必须能跑 | 默认值写在代码里,可运行时自生成配置 |
| **白名单路由** | 路由规则数量 ≤ 20 条 | 数组映射,拒绝正则 |
| **编译时检查** | 拼写/路径错误 500ms 内暴露 | 定义 `DEBUG` 常数,失败即 `die()` |
| **原子写入** | 并发写入损坏概率 = 0 | 临时文件 + `rename()` |
| **显式变量** | 模板里无 `extract()` | 预定义变量,IDE 可补全 |
| **可降级** | 依赖缺失时仍**部分可用** | 插件加载失败只跳过,不抛异常 |
---
## 常见误区澄清
| 误区 | 正解 |
|---|---|
| "SGR = 代码越少越好" | 目标是**不可错**,不是**不可读**;适度冗余允许 |
| "不能拆文件" | **核心交付**单文件,**周边能力**可拆分 |
| "不要框架" | 可以用框架,但**必须能一键降级到单文件跑通** |
---
> **SGR 的终极形态:**
> 当开发者**凌晨三点**被叫醒改线上 Bug,
> 他**不需要日志、不需要文档、不需要回滚**,
> 只需打开**唯一那个文件**,
> 一眼看出哪里拼错、哪里路径错、哪里少传参,
> **改完保存,继续睡觉。**
**简单到不会错,是写给未来的自己,也是写给所有不想加班的人。**
发表回复