5
约 1356 字大约 5 分钟
2025-11-30
在全栈开发中,建立统一的代码规范和遵循最佳实践对于保证项目质量、提高团队协作效率至关重要。本章将详细介绍前端和后端的代码规范,以及如何使用工具来自动化代码质量控制。
4.1 前端代码规范
4.1.1 基础规范
- 使用 TypeScript 进行类型检查,提高代码的健壮性
- 遵循 Vue 3 的 Composition API 风格进行组件开发
- 组件命名采用 PascalCase,如
UserProfile.vue - Props 命名采用 camelCase,事件命名采用 kebab-case
- 常量命名使用全大写加下划线,如
MAX_RETRY_COUNT
4.1.2 进阶规范
- 为组件和函数添加适当的 JSDoc 文档注释
- 使用 ESLint 和 Prettier 保持代码风格一致
- 组件拆分遵循单一职责原则,避免过大的组件
- 使用 Pinia 进行状态管理,遵循 Store 的最佳实践
- 合理使用 Vue 的响应式 API,避免不必要的响应式开销
4.1.3 文件结构规范
- 相关组件放在同一目录下,使用 index.ts 导出
- 工具函数按功能模块组织在 utils 目录
- 样式文件与组件文件放在同一目录,使用 Vue 的单文件组件模式
4.2 后端代码规范
4.2.1 基础规范
- 遵循 PEP 8 编码规范,使用 4 个空格进行缩进
- 模块和函数命名使用 snake_case,类名使用 PascalCase
- 变量命名清晰明确,避免使用单字母变量(循环变量除外)
- 使用 Black、isort 和 Flake8 格式化和检查代码
4.2.2 进阶规范
- 使用 Pydantic 模型进行数据验证和序列化/反序列化
- 为 API 添加清晰的文档字符串和请求/响应示例
- 实现适当的错误处理和日志记录
- 遵循依赖注入原则,提高代码的可测试性
- 数据库操作封装在专门的服务层,避免直接在路由处理函数中操作数据库
4.2.3 文件结构规范
- API 路由按资源类型组织
- 数据模型和业务逻辑分离
- 配置信息集中管理,支持不同环境的配置切换
4.3 通用开发规范
4.3.1 开发流程规范
- 代码提交前运行格式化和检查工具
- 编写单元测试和集成测试,确保代码质量
- 提交信息使用清晰的格式,描述变更内容和原因
- 功能开发前编写技术方案文档
4.3.2 代码质量规范
- 保持函数的单一职责原则
- 代码注释应解释"为什么"而不是"是什么"
- 避免深度嵌套的条件语句和循环
- 优先使用不可变数据结构
- 避免使用魔术数字和硬编码字符串
4.3.3 安全规范
- 前端避免在客户端存储敏感信息
- 后端实现适当的认证和授权机制
- 使用参数化查询,避免 SQL 注入
- 对用户输入进行严格验证
4.4 代码规范工具配置
下面是推荐的代码规范工具配置,帮助你在项目中实现自动化的代码检查和格式化:
4.4.1 前端项目配置
4.4.1.1 ESLint 配置
创建或完善 .eslintrc.js 文件:
// .eslintrc.js
module.exports = {
extends: [
'@nuxt/eslint-config',
'plugin:prettier/recommended',
'plugin:vue/vue3-recommended',
'plugin:@typescript-eslint/recommended'
],
parserOptions: {
ecmaVersion: 2020,
parser: '@typescript-eslint/parser'
},
rules: {
// 基础规则
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
// Vue 规则
'vue/multi-word-component-names': 'warn',
'vue/attribute-hyphenation': 'on',
'vue/require-default-prop': 'off',
// TypeScript 规则
'@typescript-eslint/explicit-module-boundary-types': 'warn',
'@typescript-eslint/no-explicit-any': 'warn'
}
}4.4.1.2 Prettier 配置
创建或完善 .prettierrc 文件:
{
"semi": false,
"singleQuote": true,
"trailingComma": "es5",
"printWidth": 80,
"tabWidth": 2,
"arrowParens": "avoid",
"vueIndentScriptAndStyle": true
}4.4.1.3 TypeScript 配置
在 tsconfig.json 中添加严格的类型检查选项:
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictBindCallApply": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"alwaysStrict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}4.4.1.4 package.json 中的脚本配置
{
"scripts": {
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"format": "prettier --write .",
"type-check": "vue-tsc --noEmit -p tsconfig.json --composite false"
}
}4.4.2 后端项目配置
4.4.2.1 pyproject.toml 配置
[tool.black]
line-length = 88
target-version = ['py39']
include = '\\.pyi?$'
exclude = '''
/(\\.
|venv
|__pycache__
|build
|dist
)/
'''
[tool.isort]
profile = "black"
line_length = 88
known_first_party = ["app"]
known_third_party = ["fastapi", "uvicorn", "sqlalchemy", "pydantic"]
[tool.flake8]
max-line-length = 88
extend-ignore = ["E203", "W503"]
select = ["E9", "F63", "F7", "F82"]4.4.2.2 mypy 配置(可选,用于类型检查)
创建 mypy.ini 文件:
[mypy]
python_version = 3.9
warn_return_any = True
warn_unused_configs = True
no_implicit_optional = True
disallow_untyped_defs = False
disallow_incomplete_defs = False
check_untyped_defs = False
[mypy-fastapi.*]
follow_imports = skip
[mypy-pydantic.*]
follow_imports = skip4.4.2.3 任务脚本配置
使用 taskipy 或创建 Makefile 来管理开发任务:
# 在 pyproject.toml 中添加
[tool.taskipy.tasks]
dev = "uvicorn app.main:app --reload --host 0.0.0.0 --port 8000"
test = "pytest"
format = "black app tests && isort app tests"
lint = "flake8 app tests"
check-types = "mypy app"
check-all = "task format && task lint && task check-types && task test"4.4.3 工具使用指南
通过以上配置,你可以在开发过程中使用以下命令来保持代码质量:
前端项目:
pnpm run lint- 检查并修复代码风格问题pnpm run format- 格式化所有代码pnpm run type-check- 运行 TypeScript 类型检查
后端项目:
task format- 使用 Black 和 isort 格式化代码task lint- 使用 Flake8 检查代码质量task check-types- 使用 mypy 检查类型task check-all- 运行所有检查和测试
这些工具和配置将帮助你在项目开发过程中保持一致的代码风格,减少常见错误,并提高代码的可读性和可维护性。