主题
规范
CatchAdmin 是一款基于现代化技术栈构建的前后端分离框架,采用模块化架构设计。为了确保代码质量和项目的长期可维护性,制定了一套完整的开发规范体系。
这套规范体系具有以下特点:
- 标准化:严格遵循社区公认的编码标准,具有广泛的适用性
- 模块化:支持功能模块的独立开发和维护,提高代码复用性
- 可维护性:通过统一的规范降低代码维护成本和团队协作难度
所有规范均基于行业最佳实践和社区标准制定,而非个人偏好,确保了规范的权威性和普适性。
代码规范
PHP 代码规范
项目严格遵循 PSR-12 编码标准,这是 PHP 社区广泛认可的代码风格规范,确保代码的一致性和可读性。通过统一的编码风格,团队成员可以更容易地理解和维护彼此的代码。
代码格式化工具:
项目集成了 Laravel Pint 作为代码格式化工具,它基于 PHP CS Fixer 构建,专为 Laravel 项目优化。配置文件 pint.json 位于项目根目录:
json
{
"preset": "psr12",
"rules": {
"braces": false
},
"exclude": ["database"],
"notName": ["server.php"]
}配置说明:
preset: 使用 PSR-12 预设规则rules.braces: 禁用大括号格式化规则,保持 Laravel 风格exclude: 排除 database 目录,避免格式化迁移文件notName: 排除特定文件名
IDE 集成:
建议在 PHPStorm 中配置自动格式化,在保存文件时自动应用代码规范。也可以使用命令行进行批量格式化:
shell
composer pint该命令会格式化项目中所有符合条件的 PHP 文件,确保代码风格的一致性。
前端代码规范
前端采用现代化的 Vue 3 + TypeScript 技术栈,项目文件独立存放在 web 目录中。TypeScript 提供了强类型支持,显著提高了代码的健壮性和开发效率,而 Vue 3 的 Composition API 则提供了更好的逻辑复用和代码组织能力。
代码格式化配置:
使用 Prettier 作为代码格式化工具,确保团队代码风格的统一。VS Code 用户可安装 Prettier 插件实现自动格式化。配置文件 .prettierrc 位于 web 目录下:
json
{
"semi": false,
"printWidth": 200,
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"arrowParens": "avoid",
"trailingComma": "none",
"bracketSpacing": true
}配置项说明:
semi: 不使用分号结尾,保持代码简洁printWidth: 单行最大长度 200 字符,适应现代宽屏显示器tabWidth: 使用 2 个空格缩进,符合前端社区习惯singleQuote: 使用单引号,与 Vue 生态保持一致arrowParens: 箭头函数单参数时省略括号trailingComma: 不使用尾随逗号,保持代码整洁
项目开发规范
项目采用模块化架构设计,将复杂的业务功能拆分为独立的功能模块,每个模块具有完整的业务闭环和清晰的职责边界。这种设计模式提高了代码的可维护性、可测试性和团队协作效率。
模块化设计原则:
- 单一职责:每个模块专注于特定的业务领域
- 高内聚低耦合:模块内部功能紧密相关,模块间依赖最小化
- 独立部署:支持模块的独立开发、测试和部署
标准目录结构:
以权限模块(modules/Permissions)为例,展示标准的模块目录组织:
├─permissions
│ ├─database # 数据库相关文件
│ │ ├─migrations # 数据库迁移文件
│ │ └─seeders # 数据填充文件
│ ├─Exceptions # 模块专用异常类
│ ├─Middlewares # 模块中间件
│ ├─Providers # 服务提供者
│ ├─routes # 模块路由定义
│ ├─HTTP # HTTP层业务逻辑
│ │ ├─Controllers # 控制器类
│ │ └─Requests # 表单验证请求类
│ └─Models # 数据模型类
├─Installer.php # 模块安装器架构分层策略:
项目采用灵活的分层架构,根据模块复杂度选择合适的分层模式,避免过度设计。
轻量级分层(适用于简单模块):
对于权限管理等相对简单的模块,采用 Controller → Model → Request 的轻量级分层:
- Controller:处理 HTTP 请求和响应
- Model:数据模型和基础业务逻辑
- Request:表单验证和数据处理
- Trait:公共逻辑的复用机制
这种模式的优势:
- 调用链路短,便于调试和维护
- 代码结构清晰,学习成本低
- 避免过度抽象带来的复杂性
标准分层(适用于复杂模块):
对于商城管理等复杂业务模块,引入 Controller → Service → Repository → Model 分层:
- Service 层:封装复杂的业务逻辑和数据处理
- Repository 层:数据访问抽象,支持多数据源
- 业务聚合:处理跨模块的业务协调
分层选择原则:
- 复杂度驱动:根据业务复杂度选择合适的分层深度
- 团队协作:考虑团队规模和协作模式
- 维护成本:平衡代码结构和维护难度
- 性能考量:避免过深的调用链影响性能
通过这种灵活的分层策略,既保证了代码的可维护性,又避免了不必要的复杂性。