From 04eb538c5a667ff327787bb41d831a344cf13684 Mon Sep 17 00:00:00 2001 From: kingecg Date: Thu, 5 Jun 2025 20:05:23 +0800 Subject: [PATCH] add coding style guid --- design/coding_style_guide.md | 183 +++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 design/coding_style_guide.md diff --git a/design/coding_style_guide.md b/design/coding_style_guide.md new file mode 100644 index 0000000..8fd234d --- /dev/null +++ b/design/coding_style_guide.md @@ -0,0 +1,183 @@ +# GoAIDB 编码与代码风格指南 + +## 目标 +制定统一的编码规范,确保代码质量、可读性和可维护性。 + +## 适用范围 +适用于本项目所有Go语言代码的编写和维护。 + +## 通用原则 +1. 保持代码简洁清晰 +2. 写好注释,特别是业务逻辑复杂的部分 +3. 遵循最小化接口原则 +4. 异常处理要全面 +5. 内存管理要谨慎 + +## 命名规范 +### 包命名 +- 使用小写 +- 简短且具有描述性 +- 不使用下划线 + +```go +// 正确示例 +datastorage +queryprocessor + +// 错误示例 +DataStorage // 不应该大写 +very_long_package_name // 太长了 +``` + +### 变量命名 +- 使用驼峰式命名法(CamelCase) +- 名称应明确表达变量含义 +- 局部变量可以简短些,但不得影响理解 + +```go +// 正确示例 +userName +connectionPool + +// 错误示例 +unm // 含义不明 +cp // 含义不明 +``` + +### 函数命名 +- 动词+名词形式 +- 保持一致性 +- 清晰表达函数作用 + +```go +// 正确示例 +CalculateUserRank() +ProcessQueryRequest() + +// 错误示例 +UserRank() // 动作不明确 +DoSomething() // 含义模糊 +``` + +## 格式规范 +### 缩进 +- 使用4个空格缩进 +- 不使用Tab + +### 行长度 +- 每行不超过80个字符 +- 特殊情况(如长URL)例外 + +### 空格 +- 运算符两侧加空格 +- 逗号后加空格 +- 冒号后加空格 + +```go +// 正确示例 +result := a + b +args := make([]string, 0, 10) + +// 错误示例 +result:=a+b +args:=make([]string,0,10) +``` + +### 括号 +- 左括号不要独占一行 +- 控制结构必须使用括号 + +```go +// 正确示例 +if condition { + // do something +} + +// 错误示例 +if condition +{ + // do something +} +``` + +## 注释规范 +### 文件头注释 +每个源文件都应包含以下信息: +- 文件功能说明 +- 创建日期 +- 创建人 +- 修改记录(如有) + +```go +/* + * @file: server.go + * @description: TCP服务器核心实现 + * @author: 开发者姓名 + * @date: 2023-06-01 + */ +``` + +### 函数注释 +- 所有导出函数必须添加注释 +- 使用Godoc标准格式 + +```go +// ProcessQuery 处理客户端查询请求 +// 参数: +// query - 查询语句 +// 返回值: +// Result - 查询结果 +// error - 错误信息 +func ProcessQuery(query string) (Result, error) { + // 函数实现 +} +``` + +### 行内注释 +- 解释复杂逻辑 +- 标记待办事项 + +```go +// TODO: 优化性能 +// HACK: 临时解决方案 +// FIXME: 需要修复的问题 +``` + +## 错误处理 +- 所有错误必须检查 +- 提供有意义的错误信息 +- 统一错误处理机制 + +```go +// 正确示例 +if err != nil { + log.Errorf("查询处理失败: %v", err) + return nil, fmt.Errorf("query processing failed: %w", err) +} + +// 错误示例 +if err != nil { + return nil // 静默忽略错误 +} +``` + +## 测试规范 +- 所有关键功能必须有单元测试 +- 测试用例覆盖主要分支 +- 测试文件以_test.go结尾 + +## Git提交规范 +- 提交信息清晰明了 +- 推荐格式: [模块] 操作描述 + +```text +[server] 修复连接池泄漏问题 +[parser] 支持新的查询语法 +``` + +## 其他建议 +- 保持函数单一职责 +- 控制函数长度不超过50行 +- 使用设计模式提高扩展性 +- 定期重构优化代码结构 +- 使用静态分析工具检查代码 \ No newline at end of file