Merge pull request 'perf/java-coding-lineFeed-20260803' (#1) from perf/java-coding-lineFeed-20260803 into master

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2026-08-03 07:44:07 +00:00
7 changed files with 46 additions and 1 deletions
+3
View File
@@ -0,0 +1,3 @@
### Mac ###
.DS_Store
*/.DS_Store
BIN
View File
Binary file not shown.
@@ -24,12 +24,53 @@
- **必须**:服从项目 formatter、Checkstyle 或编辑器配置;不得因本文件偏好覆盖自动化格式规则。 - **必须**:服从项目 formatter、Checkstyle 或编辑器配置;不得因本文件偏好覆盖自动化格式规则。
- **必须**:控制语句始终使用大括号;关键字与左括号间保留空格;运算符两侧保留空格。 - **必须**:控制语句始终使用大括号;关键字与左括号间保留空格;运算符两侧保留空格。
- **必须**:默认使用 4 空格缩进且不使用 Tab;项目 formatter 另有规定时从项目。 - **必须**:默认使用 4 空格缩进且不使用 Tab;项目 formatter 另有规定时从项目。
- **推荐**:单行不超过 120 字符;import 和自动生成代码按工具配置处理。 - **推荐**:单行不超过 120 字符;该限制是可读性上限,不是主动换行目标。import 和自动生成代码按工具配置处理。
- **推荐**:新增方法原则上不超过 80 行,新增类原则上不超过 500 行。生成代码、声明型配置或框架限制可例外,但应说明原因。 - **推荐**:新增方法原则上不超过 80 行,新增类原则上不超过 500 行。生成代码、声明型配置或框架限制可例外,但应说明原因。
- **推荐**:方法保持聚焦,避免超过三层嵌套;优先使用卫语句、提取方法或清晰的布尔变量。 - **推荐**:方法保持聚焦,避免超过三层嵌套;优先使用卫语句、提取方法或清晰的布尔变量。
- **必须**:避免魔法值、重复代码、过深嵌套和无业务价值的抽象。 - **必须**:避免魔法值、重复代码、过深嵌套和无业务价值的抽象。
- **必须**:不要提交仅由全局换行、import 重排或格式化导致的无关 diff。 - **必须**:不要提交仅由全局换行、import 重排或格式化导致的无关 diff。
### 换行策略
- **必须**:采用紧凑优先原则。完整语句、方法签名或方法调用未超过项目行宽且保持清晰时,保留在同一行。
- **必须**:不要为了形式对称、固定“一行一个参数”或提前规避行宽而主动拆行。
- **必须**:方法声明、方法调用和构造器调用需要换行时,在不超过项目行宽的前提下保留尽可能多的完整参数;仅在参数本身复杂或项目格式化工具要求时采用“一行一个参数”。
- **必须**:布尔表达式需要换行时,将每个完整条件作为一个视觉单元,并按 `&&``||` 对齐;不要拆开简短的 `Objects.equals`、判空或比较表达式的参数。
- **推荐**:短方法链保留在同一行;长方法链需要换行时,每行保留一个语义完整的调用阶段。
- **推荐**:仅在超过项目行宽、包含复杂 Lambda/匿名类/嵌套调用、需要突出语义阶段或格式化工具强制时换行。
方法签名超过行宽时,优先紧凑续行:
```java
private boolean matchesRule(PmsProductDO product, ProductValidityRuleTypeEnum ruleType,
LocalDateTime thresholdEndExclusive) {
```
避免对每个参数机械换行:
```java
private boolean matchesRule(
PmsProductDO product,
ProductValidityRuleTypeEnum ruleType,
LocalDateTime thresholdEndExclusive) {
```
布尔条件换行时,每个条件保持完整:
```java
return Objects.equals(product.getMerchantNature(), ProductAttributeConstant.MERCHANT_NATURE_MERCHANT)
&& Objects.equals(product.getVerifyStatus(), ProductVerifyStatusEnum.VERIFIED.getCode())
&& Objects.equals(product.getDeleteStatus(), DelStatusEnum.NOT_DELETED.getCode());
```
避免拆开单个简短条件:
```java
return Objects.equals(
product.getMerchantNature(),
ProductAttributeConstant.MERCHANT_NATURE_MERCHANT);
```
## 导入 ## 导入
- **必须**:禁止通配符导入。 - **必须**:禁止通配符导入。
@@ -34,6 +34,7 @@
## API 与兼容性 ## API 与兼容性
- **必须**:公共 API 明确输入校验、返回语义、错误模型、幂等性和副作用。 - **必须**:公共 API 明确输入校验、返回语义、错误模型、幂等性和副作用。
- **必须**:单资源路径已经通过 `@PathVariable` 确定资源身份时,不得再使用可选查询参数表达另一套资源标识。不同标识的查询入口应拆分;若多个标识共同构成业务校验条件,应明确必填性、匹配规则和错误语义。
- **必须**:新增重载时检查 `null`、lambda、自动装箱和可变参数是否造成调用歧义。 - **必须**:新增重载时检查 `null`、lambda、自动装箱和可变参数是否造成调用歧义。
- **必须**:修改 DTO、枚举、JSON 字段、RPC 签名或异常类型前评估调用方兼容性。 - **必须**:修改 DTO、枚举、JSON 字段、RPC 签名或异常类型前评估调用方兼容性。
- **推荐**:返回接口类型而非具体集合实现;不要泄漏 ORM 实体、框架上下文或内部异常。 - **推荐**:返回接口类型而非具体集合实现;不要泄漏 ORM 实体、框架上下文或内部异常。
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.