从团队混乱说起
有次去朋友公司串门,他正对着屏幕叹气。一问才知道,项目上线前两天,前端突然报错,查了三小时发现是后端接口返回字段大小写不统一——有人用 userId,有人写 UserID。这种问题在小团队里太常见了,看着不起眼,积多了就成火药桶。
先搞清楚要解决什么
制定规范不是为了立规矩,而是为了省事。比如新来一个实习生,打开代码不知道该往哪个目录放文件;两个程序员同时改同一块逻辑,结果提交时冲突频发。这些问题背后其实都是缺乏共识。
架构师得先蹲到一线去看:大家现在怎么写代码?常在哪卡住?哪些地方反复出错?把这些痛点列出来,规范才有针对性。
别一上来就整本手册
见过最失败的例子,是一位架构师花两周写了 80 页《开发规范白皮书》,发群里后石沉大海。没人看,更没人执行。
聪明的做法是从小处切入。比如先统一命名规则:
// 接口返回统一使用小驼峰
user_id → userId
create_time → createTime或者约定目录结构:src/
├── api/
├── components/
├── utils/
└── views/定几条最影响协作的规则,拉上骨干讨论,达成一致后直接落地。把规范变成工具习惯
人总会犯懒。光靠自觉遵守不现实,得让系统帮忙盯。比如用 ESLint 检查代码风格,Prettier 自动格式化,Git 提交前跑一遍钩子脚本。
有个团队的做法挺巧:他们把常用注释模板做成 IDE 片段。输入 @api 就自动生成标准接口文档结构,既减少重复劳动,又保证了格式统一。
留点弹性空间
规范不是法律,得允许例外。比如紧急修复线上问题,可以先跳过部分流程,但要求事后补记录。
更重要的是定期回顾。三个月开一次会,问问大家:“现在这套规则顺手吗?有没有哪里特别别扭?” 根据反馈微调,比死守一套“完美制度”更实际。
用例子说话比讲道理管用
与其在文档里写“禁止滥用全局变量”,不如贴一段反面案例:
// ❌ 到处修改全局状态
window.currentUser = data;
// 后续任何模块都可能依赖它,难以追踪再给个改进版:// ✅ 通过模块封装管理状态
const UserStore = {
data: null,
set(user) { this.data = user; },
get() { return this.data; }
};看得见的对比,比十条规定都有效。说到底,好的开发规范不是用来约束人的,而是帮团队少踩坑、多出活。就像厨房里的调料架,摆整齐了,炒菜才不会手忙脚乱。