代码风格指南
2025年4月17日大约 4 分钟
代码风格指南
保持一致的代码风格对于项目的可读性和可维护性至关重要。请在贡献代码时遵循以下风格指南。
前端 (TypeScript / Vue / SCSS)
代码格式化:
- 使用 Prettier 进行代码格式化。项目已配置
.prettierrc文件。 - 强烈建议 在你的 IDE (如 VS Code) 中安装 Prettier 插件,并配置为 "Format on Save" (保存时自动格式化)。
- 提交前可以手动运行
pnpm format(或npm run format/yarn format) 格式化所有前端代码。
- 使用 Prettier 进行代码格式化。项目已配置
代码检查 (Linting):
- 使用 ESLint 进行代码质量和风格检查。项目已配置
.eslintrc.js(或.eslintrc.json) 文件,并集成了 TypeScript 和 Vue 的规则。 - 强烈建议 在你的 IDE 中安装 ESLint 插件,以便实时看到错误和警告。
- 提交前运行
pnpm lint(或npm run lint/yarn lint) 检查代码。请修复所有 ESLint 报告的错误 (Error)。警告 (Warning) 也应尽量解决。
- 使用 ESLint 进行代码质量和风格检查。项目已配置
TypeScript:
- 类型优先: 尽可能为变量、函数参数和返回值添加明确的类型注解。利用 TypeScript 的类型推断,但关键地方需显式注解。
- 接口 (Interface) vs 类型别名 (Type Alias): 优先使用
interface定义对象结构,使用type定义联合类型、元组或其他复杂类型。 - 避免
any: 尽量避免使用any类型。如果类型不确定,优先考虑unknown并进行类型守卫,或者使用泛型。
Vue 3:
- 组合式 API (Composition API): 推荐使用组合式 API (
<script setup>) 来组织组件逻辑,提高代码的可复用性和可维护性。 - 组件命名: 使用 PascalCase (大驼峰命名法) 命名组件文件和在
<script setup>中导入的组件,例如UserProfile.vue。在模板中使用 Kebab-case (短横线分隔命名法),例如<user-profile />。 - Props: 为 Props 添加明确的类型和必要的验证 (
required,default)。 - Emits: 使用
defineEmits显式声明组件触发的事件。 - 响应式变量: 使用
ref定义基本类型的响应式变量,使用reactive定义对象的响应式变量。
- 组合式 API (Composition API): 推荐使用组合式 API (
SCSS / CSS:
- 遵循 BEM (Block, Element, Modifier) 命名规范或其他一致的 CSS 命名约定。
- 利用 SCSS 的嵌套、变量、Mixin 等特性提高样式的可维护性。
- 避免过深的嵌套层级。
后端 (Go)
代码格式化:
- 使用
gofmt或goimports进行代码格式化。goimports会自动格式化并管理 import 语句。 - 强烈建议 配置 IDE 在保存时自动运行
goimports。 - 提交前确保代码已被格式化。
- 使用
代码检查 (Linting):
- 使用
golangci-lint进行静态代码分析。项目根目录应包含.golangci.yml配置文件。 - 安装 golangci-lint。
- 提交前运行
golangci-lint run ./...(在backend目录下) 并修复报告的问题。
- 使用
命名规范:
- 遵循 Go 官方推荐的命名规范 (Effective Go)。
- 使用
camelCase(小驼峰) 命名局部变量和函数名。 - 使用
PascalCase(大驼峰) 命名导出的变量、常量、类型和函数。 - 包名应简洁、小写且具有描述性。
- 接口名通常以
er结尾 (例如Reader,Writer,Logger)。
错误处理:
- 显式地检查并处理错误。避免使用
_忽略错误,除非你明确知道不会发生错误或错误无关紧要。 - 使用
errors.Is和errors.As(Go 1.13+) 进行错误判断和解包。 - 为重要的错误添加上下文信息,使用
fmt.Errorf("... %w", err)。
- 显式地检查并处理错误。避免使用
注释:
- 为所有导出的类型、函数、常量和变量编写清晰的注释 (Doc comments)。
- 注释应解释 "为什么" 和 "做什么",而不仅仅是 "怎么做"。
- 使用
//进行单行或行尾注释,使用/* ... */进行多行注释(较少使用)。
代码组织:
- 遵循 Go 项目的标准布局 (Standard Go Project Layout),例如将命令入口放在
cmd/,内部代码放在internal/,可复用库放在pkg/。 (根据项目实际情况调整) - 保持包的内聚性,避免循环依赖。
- 遵循 Go 项目的标准布局 (Standard Go Project Layout),例如将命令入口放在
Git 提交信息
- 遵循 Conventional Commits 规范。 这有助于自动化生成 Changelog 和版本管理。
- 格式:
<type>(<scope>): <subject>type:feat(新功能),fix(Bug 修复),docs(文档),style(代码风格),refactor(重构),perf(性能优化),test(测试),chore(构建、工具等)scope: (可选) 修改的范围 (例如frontend,backend,api,deployment)subject: 简洁描述修改内容,使用现在时态,首字母小写。
- 示例:
feat(frontend): add pod list filtering by statusfix(backend): correct error handling for cluster connectiondocs: update contribution guide for code stylechore: upgrade golangci-lint to v1.55
通过遵循这些指南,我们可以共同维护一个高质量、易于理解和协作的代码库。
