docs: 注释约定改为每方法必写(便于人工复核)

This commit is contained in:
zhoulei
2026-08-20 09:21:07 +08:00
parent 54c21876e4
commit d8da9c7b1a
7 changed files with 10 additions and 10 deletions
@@ -37,7 +37,7 @@ No automated tests (manual smoke only)
Environment: Node 18.20.7, npm mirror `https://registry.npmmirror.com`. Before local integration, adjust `vite.config.ts` (`build.outDir` → target service's `resources/html/vue/<app>/`; `server.proxy` → target backend) and `public/data/data.js` (`currentSubsystem`). After a framework upgrade, run `npm install`; never overwrite `public`, `vite.config.ts`, or `src/subsystem`. Environment: Node 18.20.7, npm mirror `https://registry.npmmirror.com`. Before local integration, adjust `vite.config.ts` (`build.outDir` → target service's `resources/html/vue/<app>/`; `server.proxy` → target backend) and `public/data/data.js` (`currentSubsystem`). After a framework upgrade, run `npm install`; never overwrite `public`, `vite.config.ts`, or `src/subsystem`.
## Architecture & Coding Style ## Architecture & Coding Style
Use TypeScript, 2-space indentation. Kebab-case files, PascalCase component names (must equal the route `name`), `getXxx`/`saveXxx` API function names. Do not add modules that are not registered in `ARCHITECTURE.md`. Preserve the dependency DAG; no reverse dependencies and no cross-module private access. Avoid empty names such as `Manager`, `Helper`, `Util`, `Common`, `Misc`, or `Tools`. Use TypeScript, 2-space indentation. Kebab-case files, PascalCase component names (must equal the route `name`), `getXxx`/`saveXxx` API function names. **Every method/function must carry a one-line responsibility comment** (manual-review friendly). Do not add modules that are not registered in `ARCHITECTURE.md`. Preserve the dependency DAG; no reverse dependencies and no cross-module private access. Avoid empty names such as `Manager`, `Helper`, `Util`, `Common`, `Misc`, or `Tools`.
UI/presentation code should consume state and send intents only — business logic goes into hooks/services; keep data-model types thin. Data access must go through the `request` wrapper (`src/framework/utils/request.ts`) — never raw `axios`/`fetch`; the wrapper handles service-alias mapping, token refresh, commonParam header, and response unwrapping (see shared spec §6). UI/presentation code should consume state and send intents only — business logic goes into hooks/services; keep data-model types thin. Data access must go through the `request` wrapper (`src/framework/utils/request.ts`) — never raw `axios`/`fetch`; the wrapper handles service-alias mapping, token refresh, commonParam header, and response unwrapping (see shared spec §6).
@@ -42,8 +42,8 @@
- 派生文档发现与上游不一致 → 回去改上游,不能让派生文档自走 - 派生文档发现与上游不一致 → 回去改上游,不能让派生文档自走
### B4. 注释与命名 ### B4. 注释与命名
- 默认不写注释;只在 WHY 不明显时写一行 - 每个方法/函数必须写注释(一行职责说明,便于人工复核)
- 不写解释 WHAT 的注释(命名应自解释) - 只在 WHY 不明显处补充 WHY 注释;不写会随时间失效的注释
- 不写"为某 issue/任务而加"这类会随时间失效的注释。 - 不写"为某 issue/任务而加"这类会随时间失效的注释。
- 严格遵守 `CONVENTIONS.md` 中的命名规范(不存在则先补)。 - 严格遵守 `CONVENTIONS.md` 中的命名规范(不存在则先补)。
@@ -49,7 +49,7 @@
### 2.5 注释 ### 2.5 注释
- 默认不写注释;只在 WHY 不明显时写一行;不写解释 WHAT 的注释。 - 每个方法/函数必须写一行职责注释(便于人工复核);只在 WHY 不明显处补充 WHY 注释;不写会随时间失效的注释。
## 3. 提交规范 ## 3. 提交规范
@@ -36,7 +36,7 @@ No automated tests (manual smoke only)
Environment: Nacos must be reachable (bootstrap.yml: server-addr/namespace; extension-configs pull abacus-database/discovery/acas/redis/actuator/xxljob); build depends on the company Maven private repo (abacus framework jars); set `<artifactId>` to `abacus.springboot.<app>`. Environment: Nacos must be reachable (bootstrap.yml: server-addr/namespace; extension-configs pull abacus-database/discovery/acas/redis/actuator/xxljob); build depends on the company Maven private repo (abacus framework jars); set `<artifactId>` to `abacus.springboot.<app>`.
## Architecture & Coding Style ## Architecture & Coding Style
Use Java, 4-space indentation, max line width 120. Controllers: `@RestController` + `@RequestMapping` + springdoc `@Tag`/`@Operation`; `throws Exception`; `@RequestParam(required=false)`; blank-param guard throws `BusinessException`; **return business objects directly** (the wrapper builds the unified response). Services orchestrate in `esb/`; raw SQL lives in `impl/` and MUST use `?` placeholders (no string concatenation). Entities: `@Entity @Table @JsonIgnoreProperties(ignoreUnknown=true) @Schema`, `@Id String`, `@Version Integer`, `STATUS_*` constants, hand-written getters/setters. Business IDs come from `DaoIdGenerator` beans — never hand-craft UUIDs. Use Java, 4-space indentation, max line width 120. **Every method must carry a one-line responsibility comment** (Javadoc style preferred; manual-review friendly). Controllers: `@RestController` + `@RequestMapping` + springdoc `@Tag`/`@Operation`; `throws Exception`; `@RequestParam(required=false)`; blank-param guard throws `BusinessException`; **return business objects directly** (the wrapper builds the unified response). Services orchestrate in `esb/`; raw SQL lives in `impl/` and MUST use `?` placeholders (no string concatenation). Entities: `@Entity @Table @JsonIgnoreProperties(ignoreUnknown=true) @Schema`, `@Id String`, `@Version Integer`, `STATUS_*` constants, hand-written getters/setters. Business IDs come from `DaoIdGenerator` beans — never hand-craft UUIDs.
Do not add modules that are not registered in `ARCHITECTURE.md`. Preserve the dependency DAG; no reverse dependencies, no cross-feature imports, and no direct access to another module's private implementation. Avoid empty names such as `Manager`, `Helper`, `Util`, or `Common` for new code (legacy `util/`/`vo/` files are reference-only — cite but do not add). Do not add modules that are not registered in `ARCHITECTURE.md`. Preserve the dependency DAG; no reverse dependencies, no cross-feature imports, and no direct access to another module's private implementation. Avoid empty names such as `Manager`, `Helper`, `Util`, or `Common` for new code (legacy `util/`/`vo/` files are reference-only — cite but do not add).
@@ -42,8 +42,8 @@
- 派生文档发现与上游不一致 → 回去改上游,不能让派生文档自走 - 派生文档发现与上游不一致 → 回去改上游,不能让派生文档自走
### B4. 注释与命名 ### B4. 注释与命名
- 默认不写注释;只在 WHY 不明显时写一行 - 每个方法/函数必须写注释(一行职责说明,便于人工复核)
- 不写解释 WHAT 的注释(命名应自解释) - 只在 WHY 不明显处补充 WHY 注释;不写会随时间失效的注释
- 不写"为某 issue/任务而加"这类会随时间失效的注释。 - 不写"为某 issue/任务而加"这类会随时间失效的注释。
- 严格遵守 `CONVENTIONS.md` 中的命名规范(不存在则先补)。 - 严格遵守 `CONVENTIONS.md` 中的命名规范(不存在则先补)。
@@ -50,7 +50,7 @@
### 2.5 注释 ### 2.5 注释
- 默认不写注释;只在 WHY 不明显时写一行;不写解释 WHAT 的注释(命名应自解释) - 每个方法必须写注释(一行职责说明,复杂方法补充入参/出参/边界,便于人工复核);只在 WHY 不明显处补充 WHY 注释;不写会随时间失效的注释
## 3. 提交规范 ## 3. 提交规范
+2 -2
View File
@@ -432,8 +432,8 @@ public DaoIdGenerator jcBillIdGenerator() {
### 8.2 代码风格 ### 8.2 代码风格
- Java:4 空格缩进、行宽 ≤ 120;**默认不写注释**,仅在 WHY 不明显处写一行注释。 - Java:4 空格缩进、行宽 ≤ 120;**每个方法必须写注释**(一行职责说明,复杂方法补充入参/出参/边界条件),便于人工复核;只在 WHY 不明显处补充 WHY 注释。
- TS/Vue:遵循框架现有风格;组件选项式 `name` + `<script setup>` 组合。 - TS/Vue:遵循框架现有风格;组件选项式 `name` + `<script setup>` 组合;**每个方法/函数必须写一行职责注释**(`//` 或 JSDoc),便于人工复核
- 命名:动词+名词、语义明确;禁语义空名(见 §4.2)。 - 命名:动词+名词、语义明确;禁语义空名(见 §4.2)。
### 8.3 评审约定 ### 8.3 评审约定