代码规范如何落地
场景
团队代码风格不一致,代码质量参差不齐,如何推动代码规范的制定和执行?
方案设计
1. 工具链配置
核心工具链
// eslint.config.mjs (ESLint 9 Flat Config)
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
{
rules: {
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'@typescript-eslint/no-explicit-any': 'warn',
},
}
);
.prettierrc
{
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"printWidth": 100,
"tabWidth": 2
}
2. Git Hooks 强制执行
package.json
{
"lint-staged": {
"*.{ts,tsx}": ["eslint --fix", "prettier --write"],
"*.{css,scss}": ["prettier --write"],
"*.md": ["prettier --write"]
}
}
3. 推行策略
| 阶段 | 做法 | 目标 |
|---|---|---|
| 第一周 | 加工具、只 warn 不 error | 让大家感知规范 |
| 第二周 | 逐步开启 error 规则 | 新代码必须符合 |
| 第三周 | 开启 pre-commit hook | 阻止提交不合规代码 |
| 第四周 | CI 流水线加检查 | 最后一道防线 |
| 持续 | 定期 Code Review | 培养规范意识 |
注意
不要一次性对存量代码全面开启严格模式,会产生几千个报错打击团队积极性。应该:
- 新代码严格执行
- 旧代码逐步迁移(lint-staged 只检查 staged 文件)
4. Code Review 规范
## Code Review 检查项
### 必查项
- [ ] 命名是否语义化
- [ ] 是否有明显的性能问题
- [ ] 是否处理了错误和边界情况
- [ ] 是否有安全风险(XSS、敏感信息)
### 建议项
- [ ] 代码是否可以更简洁
- [ ] 是否可以复用已有组件/函数
- [ ] 是否需要补充注释
常见面试问题
Q1: 你是如何推动代码规范落地的?
答案:
- 工具先行:配置 ESLint + Prettier + Husky,让规范自动化执行
- 渐进式推进:先 warn 后 error,只检查新改动文件
- 团队共识:规范不是一个人定的,组织评审让大家参与制定
- 持续改进:定期回顾规范是否合理,及时调整
Q2: ESLint 和 Prettier 的关系是什么?冲突怎么解决?
答案:
- ESLint:检查代码质量(未使用变量、类型错误等)+ 部分格式规则
- Prettier:纯格式化(缩进、引号、分号等)
冲突解决:使用 eslint-config-prettier 关闭 ESLint 中与 Prettier 冲突的格式规则,让 Prettier 专管格式。