# 宁夏智慧养殖监管平台代码规范 ## 版本历史 | 版本 | 日期 | 修改内容 | 修改人 | |------|------|----------|--------| | v1.0 | 2024-01-20 | 初始版本,制定基础代码规范 | 开发团队 | ## 1. 概述 本文档规定了宁夏智慧养殖监管平台项目的代码编写规范,旨在提高代码质量、可读性和可维护性。 ## 2. 通用规范 ### 2.1 文件命名 - **文件名**: 使用小写字母和连字符,如 `user-service.js` - **目录名**: 使用小写字母和连字符,如 `user-management` - **组件文件**: 使用 PascalCase,如 `UserProfile.vue` ### 2.2 编码格式 - **字符编码**: UTF-8 - **换行符**: LF (Unix) - **缩进**: 2个空格 - **行尾**: 不允许有多余空格 ### 2.3 注释规范 ```javascript /** * 函数功能描述 * @param {string} param1 - 参数1描述 * @param {number} param2 - 参数2描述 * @returns {boolean} 返回值描述 * @author 作者名 * @since 版本号 */ function exampleFunction(param1, param2) { // 单行注释说明 return true; } ``` ## 3. JavaScript/Node.js 规范 ### 3.1 变量命名 ```javascript // 使用 camelCase const userName = 'admin'; const userAge = 25; // 常量使用 UPPER_SNAKE_CASE const MAX_RETRY_COUNT = 3; const API_BASE_URL = 'https://api.example.com'; // 私有变量使用下划线前缀 const _privateVariable = 'private'; ``` ### 3.2 函数定义 ```javascript // 优先使用箭头函数 const getUserInfo = (userId) => { return userService.findById(userId); }; // 异步函数 const fetchUserData = async (userId) => { try { const user = await userService.findById(userId); return user; } catch (error) { logger.error('获取用户数据失败', error); throw error; } }; ``` ### 3.3 对象和数组 ```javascript // 对象属性换行 const userConfig = { name: 'admin', role: 'administrator', permissions: ['read', 'write', 'delete'], settings: { theme: 'dark', language: 'zh-CN' } }; // 数组解构 const [first, second, ...rest] = items; // 对象解构 const { name, age, ...otherProps } = user; ``` ### 3.4 错误处理 ```javascript // 统一错误处理 const handleApiError = (error) => { if (error.response) { // 服务器响应错误 logger.error('API响应错误', { status: error.response.status, data: error.response.data }); } else if (error.request) { // 请求发送失败 logger.error('请求发送失败', error.request); } else { // 其他错误 logger.error('未知错误', error.message); } throw error; }; ``` ## 4. Vue.js 规范 ### 4.1 组件命名 ```javascript // 组件名使用 PascalCase export default { name: 'UserProfile', // ... } // 文件名: UserProfile.vue ``` ### 4.2 组件结构 ```vue ``` ### 4.3 Props 定义 ```javascript props: { // 基础类型检查 title: String, count: Number, isActive: Boolean, // 复杂类型检查 user: { type: Object, required: true, validator: (value) => { return value && typeof value.id === 'string' } }, // 带默认值 size: { type: String, default: 'medium', validator: (value) => { return ['small', 'medium', 'large'].includes(value) } } } ``` ### 4.4 事件命名 ```javascript // 使用 kebab-case this.$emit('user-updated', userData) this.$emit('form-submitted', formData) // 在模板中 ``` ## 5. CSS/SCSS 规范 ### 5.1 类名命名 ```css /* 使用 BEM 命名法 */ .user-profile { /* 块 */ } .user-profile__header { /* 元素 */ } .user-profile__header--large { /* 修饰符 */ } .user-profile__avatar { /* 元素 */ } .user-profile__avatar--round { /* 修饰符 */ } ``` ### 5.2 样式组织 ```scss // 变量定义 $primary-color: #1890ff; $success-color: #52c41a; $warning-color: #faad14; $error-color: #f5222d; // 混入定义 @mixin flex-center { display: flex; justify-content: center; align-items: center; } // 组件样式 .user-profile { padding: 16px; border-radius: 4px; background-color: #fff; &__header { @include flex-center; margin-bottom: 16px; font-size: 18px; font-weight: 600; } &__content { line-height: 1.6; } } ``` ## 6. API 接口规范 ### 6.1 接口命名 ```javascript // RESTful API 命名 GET /api/users // 获取用户列表 GET /api/users/:id // 获取单个用户 POST /api/users // 创建用户 PUT /api/users/:id // 更新用户 DELETE /api/users/:id // 删除用户 // 复杂操作使用动词 POST /api/users/:id/reset-password // 重置密码 POST /api/users/:id/change-status // 更改状态 ``` ### 6.2 请求响应格式 ```javascript // 统一响应格式 { "code": 200, "message": "操作成功", "data": { // 具体数据 }, "timestamp": "2024-01-20T10:30:00Z" } // 分页响应格式 { "code": 200, "message": "获取成功", "data": { "list": [...], "pagination": { "current": 1, "pageSize": 10, "total": 100, "totalPages": 10 } } } // 错误响应格式 { "code": 400, "message": "参数错误", "error": { "field": "email", "reason": "邮箱格式不正确" }, "timestamp": "2024-01-20T10:30:00Z" } ``` ## 7. 数据库规范 ### 7.1 表命名 ```sql -- 表名使用复数形式,下划线分隔 users farm_devices alert_records user_roles -- 关联表使用两个表名组合 user_farm_bindings device_alert_configs ``` ### 7.2 字段命名 ```sql -- 字段名使用下划线分隔 CREATE TABLE users ( id VARCHAR(36) PRIMARY KEY, user_name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, phone_number VARCHAR(20), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, is_active BOOLEAN DEFAULT TRUE ); ``` ## 8. Git 提交规范 ### 8.1 提交信息格式 ``` ():