为什么需要规范?
- 统一代码规范的好处:
- 解决团队之间代码不规范导致的可读性差和可维护性差的问题。
- 解决团队成员不同编辑器导致的编码规范不统一问题。
- 提前发现代码风格问题,给出对应规范提示,及时修复。
- 减少代码审查过程中反反复复的修改过程,节约时间。
- 自动格式化,统一编码风格,从此和脏乱差的代码说再见。
- 减少
code review期间一系列的争议,因为缺乏标准,在争议过程中双方很难妥协。
- 若不统一代码规范,可能会造成的后果:
- 由于缺乏规范,导致
代码风格不一,增加团队成员间的心理负担,极端情况下,某段代码只有某个人能修改。 - 团队间协作更加困难:因为开发人员得
适应不同的风格,会导致效率低下。 - 在
code review期间可能经常为类似的事情做过多的讨论。 - 影响团队的生产力和质量,严重的甚至会影响团队和谐。
- 由于缺乏规范,导致
建立和遵守的规范
- 大致可以划分成这几个方向:
- 开发流程规范
- 代码规范(参考阿里)
git commit规范- 项目文件结构规范
UI 设计规范
开发流程规范
开发流程:接到需求 -> 需求评审(分析、拆分、工时评估) -> 技术方案设计 -> 代码设计 -> 编码 -> 编写测试用例并自测 -> 测试人员测试 -> 修复 bug 和优化 -> 上线交互 -> 用户反馈(优化)
代码格式化规范
Prettier
Prettier是一款强大的代码格式化工具。在项目根目录下创建.prettierrc文件npm i prettier -D{ "useTabs": false, "tabWidth": 2, "printWidth": 100, "singleQuote": true, "trailingComma": "none", "bracketSpacing": true, "semi": false }npx prettier --write . # 格式化所有文件(. 表示所有文件)注意:
VSCode编辑器使用Prettier配置需要下载插件Prettier - Code formatterESLint
ESLint是一款用于查找并报告代码中问题的工具ESLint 官方。在项目根目录下创建.eslintrc.js文件npm i eslint -D npx eslint --init # 用来生成.eslintrc.jsmodule.exports = { env: { browser: true, es2021: true, node: true, }, extends: ['plugin:vue/essential', 'airbnb-base'], parserOptions: { ecmaVersion: 12, parser: '@typescript-eslint/parser', sourceType: 'module', }, plugins: ['vue', '@typescript-eslint'], rules: { 'no-console': 2, // 不允许出现console语句 'no-extra-semi': 2, // 不允许出现不必要的分号 }, }- ESLint 的规则有三种级别:
- "off" 或者 0,不启用这个规则
- "warn" 或者 1,出现问题会有警告
- "error" 或者 2,出现问题会报错
注意:
VSCode使用ESLint配置文件需要去插件市场下载插件ESLint我们可以修改
VSCode -> settings.json配置,一键解决所有格式错误的代码, 只需设置编辑器保存文件时自动执行eslint --fix命令进行代码风格修复。"editor.codeActionsOnSave": { "source.fixAll.eslint": true }扩展:
Prettier和ESLint的冲突解决,eslint-plugin-prettier和eslint-config-prettier, 最后形成优先级:Prettier配置规则 >ESLint配置规则eslint-plugin-prettier: 将Prettier的规则设置到ESLint的规则中eslint-config-prettier: 关闭ESLint中与Prettier中会发生冲突的规则
- ESLint 的规则有三种级别:
StyleLint
Editor Config
根目录下增加
.editorconfig文件# 表示是最顶层的 EditorConfig 配置文件 root = true [*] # 表示所有文件适用 charset = utf-8 # 设置文件字符集为 utf-8 indent_style = space # 缩进风格(tab | space) indent_size = 2 # 缩进大小 end_of_line = lf # 控制换行类型(lf | cr | crlf) trim_trailing_whitespace = true # 去除行首的任意空白字符 insert_final_newline = true # 始终在文件末尾插入一个新行 [*.md] # 表示仅 md 文件适用以下规则 max_line_length = off trim_trailing_whitespace = false注意:
VSCode使用EditorConfig需要去插件市场下载插件EditorConfig for VS CodeHusky & Lint-Staged
命名规范
目录结构规范
代码编写规范
Git Message 提交规范(Commitizen + CommitLint)
UI 设计统一规范