本规范旨在使Git提交历史清晰、可追溯,并为自动化工具(如生成CHANGELOG)提供支持。所有提交都必须遵循 Conventional Commits 标准。
完整的提交信息格式如下:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
type (必需): 描述提交的类型,必须是以下之一:
feat
: 新增功能fix
: 修复bugdocs
: 仅文档变更style
: 代码格式变更(不影响代码逻辑)refactor
: 代码重构(既不是新增功能,也不是修复bug)perf
: 性能优化test
: 新增或修改测试build
: 影响构建系统或外部依赖的更改ci
: CI配置文件和脚本的更改chore
: 其他不修改代码或测试的杂项变动scope (可选): 影响范围(例如: auth
, user-api
, cart-ui
)。
subject (必需): 简短描述,动词开头,首字母小写,不超过50个字符。
对提交的详细描述,解释变更的原因和具体内容。
用于标记不兼容变更或关闭Issue。
BREAKING CHANGE:
开头。Closes #123, #456
。简单的修复:
fix(user-api): prevent null pointer exception on missing profile
新增功能 (带详细描述):
feat(cart-ui): add item quantity controls in shopping cart
- Users can now increment, decrement, or manually enter the quantity
for each item directly in the cart view.
- Input is debounced to avoid excessive API calls.
Closes #238
重构 (带不兼容变更):
refactor(auth): replace JWT library with Opaque Tokens
BREAKING CHANGE: The /auth/token endpoint no longer returns a JWT.
Clients must now treat the token as an opaque string and use the
/auth/introspect endpoint for validation.
---
### **Java 后端编码规范 (`java-coding-spec.md`)**
markdown
本规范基于《阿里巴巴Java开发手册》,并针对我们团队的技术栈进行补充和强调。
.editorconfig
和 checkstyle.xml
文件定义并强制执行。.orElseThrow()
, .ifPresent()
, .map()
,避免直接调用 .get()
。.parallelStream()
),仅在CPU密集型且数据量大的无状态操作中考虑。RuntimeException
的具体异常(e.g., OrderNotFoundException
)。@Transactional
注解的方法能正确回滚(默认对RuntimeException
生效)。catch
块中必须记录日志,并根据情况重新抛出或包装为自定义异常。INFO
(关键流程), WARN
(可恢复问题), ERROR
(需要人工介入)。{}
占位符,而不是字符串拼接。例如: log.info("Processing order {} for user {}", orderId, userId);
ERROR
级别日志必须包含完整的堆栈信息。final
字段,不提供setter)。Collections.unmodifiableList()
等进行包装。null
集合,应返回空集合 (e.g., Collections.emptyList()
)。禁止在业务代码中使用 System.out.println
,应统一使用日志框架。
---
### **前端 (Vue + JS) 编码规范 (`frontend-coding-spec.md`)**
markdown
本规范旨在确保前端代码库的一致性、可维护性和性能。所有代码都应通过 ESLint
和 Prettier
的自动检查。
const
。禁止使用 var
。import
/export
)。props
, store
, API
响应都应有明确的类型定义。<script setup>
语法。PascalCase
(e.g., BaseButton.vue
)。type
。Boolean
类型的非必需prop
必须提供 default
值。emit
的事件名使用 kebab-case
(e.g., @update:model-value
)。ref
和 reactive
。对于大型、只读数据,使用 shallowRef
来优化性能。<style scoped>
来避免全局样式污染。.block__element--modifier
) 或 utility-first (如 TailwindCSS) 来组织CSS类名。变量: 颜色、字体大小、间距等应定义为CSS变量,便于维护。
:root {
--primary-color: #42b983;
--font-size-base: 16px;
}
<nav>
, <button>
, <main>
)。<img>
标签必须有 alt
属性。<label>
关联。onErrorCaptured
钩子或错误边界组件来捕获组件内部错误,防止整个应用崩溃。