Bladeren bron

docs(java): 添加Java代码注释模板文档

- 添加Application Service类注释模板,包含类注释、字段注释和各类方法注释模板
- 添加Domain Service类注释模板,涵盖业务规则验证、领域计算、转换聚合等方法模板
- 添加Feign Service Interface类注释模板,包含GET、POST、PUT、DELETE等请求方法模板
- 提供Java编程规范格式和标准JavaDoc格式两种模板选项
- 包含详细的使用说明和占位符替换指南
wandl-6A72h 8 maanden geleden
bovenliggende
commit
c5e30ad511

+ 72 - 4
skills/java-code-comments/SKILL.md

@@ -38,6 +38,9 @@ license: Complete terms in LICENSE.txt
 - Controller (REST controllers, Spring MVC controllers)
 - Service (business service interfaces)
 - ServiceImpl (service implementations)
+- Application Service (DDD application services, orchestrating domain logic)
+- Domain Service (DDD domain services, domain business logic)
+- Feign Service Interface (Feign remote service interfaces)
 - Mapper (MyBatis mappers, data access layer)
 - Model (data models, domain models)
 - Entity (JPA entities, database entities)
@@ -110,6 +113,9 @@ Present a checklist of common Java component types and ask the user to select:
 - [ ] Controller(控制器)
 - [ ] Service(服务接口)
 - [ ] ServiceImpl(服务实现)
+- [ ] Application Service(应用服务,DDD架构)
+- [ ] Domain Service(领域服务,DDD架构)
+- [ ] Feign Service Interface(Feign远程服务接口)
 - [ ] Mapper(数据访问层)
 - [ ] Model(数据模型)
 - [ ] Entity(实体类)
@@ -234,6 +240,63 @@ For each component type selected by the user:
    public class UserController {
    ```
 
+   **Specialized class comment formats** (Java Coding Standards - strict):
+
+   **Application Service:**
+   ```java
+   /**
+    * {服务名称}应用服务
+    *
+    * <p>{详细描述服务的业务功能、职责和应用场景}</p>
+    * <p>主要功能包括:</p>
+    * <ul>
+    *   <li>{功能点1}</li>
+    *   <li>{功能点2}</li>
+    *   <li>{功能点3}</li>
+    * </ul>
+    *
+    * @author system
+    * @since 2025-01-21
+    */
+   public class UserApplicationService {
+   ```
+
+   **Domain Service:**
+   ```java
+   /**
+    * {服务名称}领域服务
+    *
+    * <p>{详细描述服务的领域职责和业务逻辑}</p>
+    * <p>主要功能包括:</p>
+    * <ul>
+    *   <li>{功能点1}</li>
+    *   <li>{功能点2}</li>
+    * </ul>
+    *
+    * @author system
+    * @since 2025-01-21
+    */
+   public class UserDomainService {
+   ```
+
+   **Feign Service Interface:**
+   ```java
+   /**
+    * {服务名称}Feign远程服务接口
+    *
+    * <p>通过Feign调用{目标服务}的远程接口</p>
+    * <p>主要功能:</p>
+    * <ul>
+    *   <li>{接口功能1}</li>
+    *   <li>{接口功能2}</li>
+    * </ul>
+    *
+    * @author system
+    * @since 2025-01-21
+    */
+   public interface UserFeignService {
+   ```
+
 3. **Method-level comment format** (Standard JavaDoc):
    ```java
    /**
@@ -305,8 +368,8 @@ For each component type selected by the user:
 **IMPORTANT: Comment Format Standards**
 
 This skill follows two standards:
-1. **Standard JavaDoc** (default): See [javadoc-standards.md](reference/javadoc-standards.md)
-2. **Java Coding Standards** (strict): See [java-coding-standards.md](reference/java-coding-standards.md)
+1. **Standard JavaDoc** (default): See [javadoc-standards.md](reference/javadoc-standards.md) (within this skill)
+2. **Java Coding Standards** (strict): See [java-coding-standards.md](reference/java-coding-standards.md) (within this skill)
 
 The Java Coding Standards require:
 - **Description must be wrapped in `<p>` tags**: `<p>description</p>`
@@ -351,14 +414,19 @@ For different component types, use appropriate templates from the `templates/` d
 - `templates/controller-comment-template.md` - Controller class comments
 - `templates/service-comment-template.md` - Service interface comments
 - `templates/serviceimpl-comment-template.md` - Service implementation comments
+- `templates/application-service-comment-template.md` - Application Service comments (DDD)
+- `templates/domain-service-comment-template.md` - Domain Service comments (DDD)
+- `templates/feign-service-comment-template.md` - Feign Service Interface comments
 - `templates/mapper-comment-template.md` - Mapper comments
 - `templates/entity-comment-template.md` - Entity class comments
 - `templates/dto-comment-template.md` - DTO class comments
 
 ### Comment Standards Reference
 
-- **Standard JavaDoc**: See [reference/javadoc-standards.md](reference/javadoc-standards.md)
-- **Java Coding Standards** (strict format): See [reference/java-coding-standards.md](reference/java-coding-standards.md)
+**Note**: All reference documents are located within this skill's directory structure.
+
+- **Standard JavaDoc**: See [reference/javadoc-standards.md](reference/javadoc-standards.md) (local reference)
+- **Java Coding Standards** (strict format): See [reference/java-coding-standards.md](reference/java-coding-standards.md) (local reference)
 
 **When to use Java Coding Standards format:**
 - When the project explicitly follows 《JAVA 编程规范》

+ 132 - 162
skills/java-code-comments/reference/java-coding-standards.md

@@ -1,69 +1,106 @@
-# Java 编程规范 - 文档化要求
+# Java 编程规范 - 严格格式要求
 
 ## 概述
 
-本文档基于《JAVA 编程规范》,说明 Java 代码注释的规范要求。根据规范第10节"文档化"的要求,必须用 javadoc 来为类生成文档,这是被各种 Java 编译器都认可的标准方法。
+本文档基于《JAVA 编程规范》第10节"文档化"的要求,说明与标准 JavaDoc 的**差异**和**严格格式要求**。
+
+> **重要提示**:本文档只说明严格格式的特殊要求。标准 JavaDoc 格式请参考 [javadoc-standards.md](./javadoc-standards.md)。
 
 ## 核心要求
 
-### 1. 必须使用 JavaDoc
+根据《JAVA 编程规范》,必须用 javadoc 来为类生成文档,这是被各种 Java 编译器都认可的标准方法。但规范对格式有更严格的要求。
 
-- **必须用 javadoc 来为类生成文档**,不仅因为它是标准,这也是被各种 Java 编译器都认可的方法
-- 程序中类的描述要求符合 Javadoc 的规范
+## 与标准 JavaDoc 的区别
 
-### 2. JavaDoc 注释格式
+本规范与标准 JavaDoc 的主要区别:
 
-根据规范,JavaDoc 注释的标准格式如下:
+### 1. 描述信息必须使用 `<p>` 标签包裹
 
+**标准 JavaDoc**:
 ```java
 /**
- * <p>向缓冲池中增加一个属性和相应的字符串值</p>
+ * 类描述
+ * 
+ * <p>详细说明(可选)
+ */
+```
+
+**Java 编程规范(严格)**:
+```java
+/**
+ * <p>类描述</p>
  *
- * @return int
- * @param attribute java.lang.String
- * @param data java.lang.String
- * @exception java.lang.Exception
+ * <p>详细说明(必须用 <p> 标签包裹)</p>
  */
 ```
 
-### 3. 格式要求
+**要求**:
+- 类、方法、字段的描述**必须**使用 `<p> </p>` 括起来
+- 不能直接写描述,必须包裹在 `<p>` 标签中
 
-1. **描述信息使用 `<p> </p>` 括起来**
-   - 类、方法、字段的描述都应该使用 `<p>` 标签包裹
-   - 这是规范要求的格式
+### 2. 参数类型必须明确声明
 
-2. **必须声明返回参数**
-   - 使用 `@return` 标签
-   - 说明返回值的类型和含义
+**标准 JavaDoc**:
+```java
+/**
+ * @param username 用户名,长度3-20个字符
+ */
+```
 
-3. **必须声明传入参数**
-   - 使用 `@param` 标签
-   - 格式:`@param 参数名 参数类型 参数说明`
-   - 例如:`@param attribute java.lang.String`
+**Java 编程规范(严格)**:
+```java
+/**
+ * @param username java.lang.String 用户名,长度3-20个字符
+ */
+```
 
-4. **必须声明异常处理**
-   - 使用 `@exception` 或 `@throws` 标签
-   - 格式:`@exception 异常类型 异常说明`
-   - 例如:`@exception java.lang.Exception`
+**要求**:
+- 格式:`@param 参数名 参数类型 参数说明`
+- 参数类型使用完整类名(如 `java.lang.String`)或简单类型(如 `int`)
 
-## 类注释规范
+### 3. 返回值类型必须明确声明
 
-### 基本格式
+**标准 JavaDoc**:
+```java
+/**
+ * @return 用户信息DTO
+ */
+```
 
+**Java 编程规范(严格)**:
 ```java
 /**
- * <p>类描述信息</p>
- *
- * <p>类的详细说明,包括主要功能、职责等</p>
- *
- * @author 作者名
- * @since 版本号或日期
+ * @return com.example.dto.UserDTO 用户信息DTO
+ */
+```
+
+**要求**:
+- 格式:`@return 返回类型 返回值说明`
+- 返回类型使用完整类名或简单类型
+
+### 4. 异常类型必须使用完整包名
+
+**标准 JavaDoc**:
+```java
+/**
+ * @throws IllegalArgumentException 当参数不合法时抛出
+ */
+```
+
+**Java 编程规范(严格)**:
+```java
+/**
+ * @exception java.lang.IllegalArgumentException 当参数不合法时抛出
  */
-public class MyClass {
-}
 ```
 
-### 示例
+**要求**:
+- 格式:`@exception 完整异常类型 异常说明` 或 `@throws 完整异常类型 异常说明`
+- 异常类型必须包含完整包名(如 `java.lang.Exception`)
+
+## 格式示例
+
+### 类注释格式
 
 ```java
 /**
@@ -79,43 +116,38 @@ public class UserService {
 }
 ```
 
-## 方法注释规范
-
-### 基本格式
+### 方法注释格式
 
 ```java
 /**
- * <p>方法描述信息</p>
+ * <p>根据用户ID查询用户信息</p>
  *
- * <p>方法的详细说明,包括功能、处理流程等</p>
+ * <p>根据提供的用户ID从数据库查询对应的用户详细信息。
+ * 如果用户不存在,将抛出ResourceNotFoundException异常。</p>
  *
- * @param 参数名 参数类型 参数说明
- * @return 返回类型 返回值说明
- * @exception 异常类型 异常说明
+ * @param id java.lang.Long 用户唯一标识符,不能为null
+ * @return com.example.dto.UserDTO 用户信息DTO,包含用户的基本信息
+ * @exception com.example.exception.ResourceNotFoundException 当用户不存在时抛出
+ * @exception java.lang.IllegalArgumentException 当id为null时抛出
  */
-public ReturnType methodName(ParamType param) {
+@GetMapping("/{id}")
+public UserDTO getUserById(@PathVariable Long id) {
+    // 实现代码
 }
 ```
 
-### 示例
+### 字段注释格式
 
 ```java
 /**
- * <p>向缓冲池中增加一个属性和相应的字符串值</p>
- *
- * <p>该方法用于向系统缓冲池中添加新的属性配置,包括属性名称和对应的字符串值。
- * 如果属性已存在,则更新其值;如果不存在,则创建新的属性项。</p>
+ * <p>用户数据访问对象</p>
  *
- * @param attribute java.lang.String 属性名称,不能为空
- * @param data java.lang.String 属性对应的字符串值
- * @return int 返回操作结果,0表示成功,-1表示失败
- * @exception java.lang.Exception 当属性名称为空或缓冲池操作失败时抛出
+ * <p>用于执行用户相关的数据库操作,由Spring容器注入</p>
  */
-public int addAttribute(String attribute, String data) throws Exception {
-}
+private final UserMapper userMapper;
 ```
 
-### 多参数示例
+### 多参数方法示例
 
 ```java
 /**
@@ -135,40 +167,12 @@ public UserDTO createUser(String username, String email, String password)
 }
 ```
 
-## 字段注释规范
-
-### 基本格式
-
-```java
-/**
- * <p>字段描述信息</p>
- *
- * <p>字段的详细说明,包括用途、约束等</p>
- */
-private FieldType fieldName;
-```
-
-### 示例
-
-```java
-/**
- * <p>用户数据访问对象</p>
- *
- * <p>用于执行用户相关的数据库操作,由Spring容器注入</p>
- */
-private final UserMapper userMapper;
-```
-
 ## 标签使用规范
 
 ### @param 标签
 
 **格式**:`@param 参数名 参数类型 参数说明`
 
-**要求**:
-- 必须包含参数类型(完整类名或简单类型)
-- 参数说明要清晰,包括约束条件
-
 **示例**:
 ```java
 /**
@@ -181,10 +185,6 @@ private final UserMapper userMapper;
 
 **格式**:`@return 返回类型 返回值说明`
 
-**要求**:
-- 必须包含返回类型(完整类名或简单类型)
-- 说明返回值的含义和可能的值
-
 **示例**:
 ```java
 /**
@@ -195,11 +195,7 @@ private final UserMapper userMapper;
 
 ### @exception / @throws 标签
 
-**格式**:`@exception 异常类型 异常说明` 或 `@throws 异常类型 异常说明`
-
-**要求**:
-- 必须包含完整的异常类型(包括包名)
-- 说明什么情况下会抛出该异常
+**格式**:`@exception 完整异常类型 异常说明` 或 `@throws 完整异常类型 异常说明`
 
 **示例**:
 ```java
@@ -210,55 +206,6 @@ private final UserMapper userMapper;
  */
 ```
 
-## 完整示例
-
-### 类注释完整示例
-
-```java
-/**
- * <p>用户管理控制器</p>
- *
- * <p>提供用户相关的REST API接口,包括用户的创建、查询、更新和删除操作。
- * 本控制器遵循RESTful设计规范,使用标准的HTTP方法进行资源操作。</p>
- *
- * <p>主要功能:
- * <ul>
- *   <li>创建新用户</li>
- *   <li>根据ID查询用户信息</li>
- *   <li>更新用户信息</li>
- *   <li>删除用户</li>
- * </ul>
- * </p>
- *
- * @author System
- * @since 1.0.0
- */
-@RestController
-@RequestMapping("/api/users")
-public class UserController {
-}
-```
-
-### 方法注释完整示例
-
-```java
-/**
- * <p>根据用户ID查询用户信息</p>
- *
- * <p>根据提供的用户ID从数据库查询对应的用户详细信息。
- * 如果用户不存在,将抛出ResourceNotFoundException异常。</p>
- *
- * @param id java.lang.Long 用户唯一标识符,不能为null
- * @return com.example.dto.UserDTO 用户信息DTO,包含用户的基本信息
- * @exception com.example.exception.ResourceNotFoundException 当用户不存在时抛出
- * @exception java.lang.IllegalArgumentException 当id为null时抛出
- */
-@GetMapping("/{id}")
-public UserDTO getUserById(@PathVariable Long id) {
-    // 实现代码
-}
-```
-
 ## 规范要点总结
 
 1. **必须使用 `<p>` 标签包裹描述信息**
@@ -266,17 +213,17 @@ public UserDTO getUserById(@PathVariable Long id) {
    - 方法描述:`<p>方法描述</p>`
    - 字段描述:`<p>字段描述</p>`
 
-2. **必须声明所有参数**
+2. **必须声明所有参数类型**
    - 格式:`@param 参数名 参数类型 参数说明`
    - 参数类型使用完整类名(如 `java.lang.String`)或简单类型(如 `int`)
 
-3. **必须声明返回值**
+3. **必须声明返回值类型**
    - 格式:`@return 返回类型 返回值说明`
    - 返回类型使用完整类名或简单类型
 
-4. **必须声明异常**
-   - 格式:`@exception 异常类型 异常说明` 或 `@throws 异常类型 异常说明`
-   - 异常类型使用完整类名(包括包名)
+4. **必须声明异常类型(包含完整包名)**
+   - 格式:`@exception 完整异常类型 异常说明` 或 `@throws 完整异常类型 异常说明`
+   - 异常类型必须包含完整包名
 
 5. **标签顺序**
    - 描述信息(`<p>` 标签)
@@ -285,23 +232,46 @@ public UserDTO getUserById(@PathVariable Long id) {
    - `@exception` / `@throws` 标签
    - 其他标签(`@author`, `@since` 等)
 
-## 与标准 JavaDoc 的区别
+## 完整示例对比
 
-本规范基于《JAVA 编程规范》,与标准 JavaDoc 的主要区别:
+### 标准 JavaDoc 格式
+
+```java
+/**
+ * 用户管理控制器
+ * 
+ * <p>提供用户相关的REST API接口,包括用户的创建、查询、更新和删除操作。
+ * 本控制器遵循RESTful设计规范,使用标准的HTTP方法进行资源操作。
+ * 
+ * @author System
+ * @since 1.0.0
+ */
+```
+
+### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>用户管理控制器</p>
+ *
+ * <p>提供用户相关的REST API接口,包括用户的创建、查询、更新和删除操作。
+ * 本控制器遵循RESTful设计规范,使用标准的HTTP方法进行资源操作。</p>
+ *
+ * @author System
+ * @since 1.0.0
+ */
+```
 
-1. **描述信息必须使用 `<p>` 标签包裹**
-   - 标准 JavaDoc:可以直接写描述,不需要 `<p>` 标签
-   - 本规范:描述信息必须使用 `<p> </p>` 括起来
+## 何时使用本规范
 
-2. **参数类型声明更明确**
-   - 标准 JavaDoc:`@param paramName description`
-   - 本规范:`@param paramName paramType description`(包含类型)
+使用本严格格式规范的情况:
 
-3. **返回值类型声明更明确**
-   - 标准 JavaDoc:`@return description`
-   - 本规范:`@return returnType description`(包含类型)
+- 项目明确要求遵循《JAVA 编程规范》
+- 项目要求所有描述信息必须使用 `<p>` 标签包裹
+- 项目要求参数和返回值类型必须在注释中明确声明
+- 项目要求异常类型必须使用完整包名
 
 ## 参考资料
 
 - 《JAVA 编程规范》第10节 - 文档化
-- Sun Microsystems, Inc. 《How to Write Doc Comments for the Javadoc(TM) Tool》
+- 标准 JavaDoc 规范:参见 [javadoc-standards.md](./javadoc-standards.md)

+ 1 - 1
skills/java-code-comments/reference/javadoc-standards.md

@@ -4,7 +4,7 @@
 
 JavaDoc 是 Java 的文档生成工具,通过标准化的注释格式生成 API 文档。本文档说明如何编写符合规范的 JavaDoc 注释。
 
-> **注意**:本文档基于标准 JavaDoc 规范。如果项目遵循《JAVA 编程规范》,请参考 [java-coding-standards.md](./java-coding-standards.md) 获取更严格的格式要求。
+> **注意**:本文档基于标准 JavaDoc 规范。如果项目遵循《JAVA 编程规范》,请参考 [java-coding-standards.md](./java-coding-standards.md) 获取更严格的格式要求(该文档只说明与标准 JavaDoc 的差异,避免重复)
 
 ## 注释格式
 

+ 271 - 0
skills/java-code-comments/templates/application-service-comment-template.md

@@ -0,0 +1,271 @@
+# Application Service 类注释模板
+
+## 类注释模板
+
+### Java 编程规范格式(严格)
+
+```java
+/**
+ * {服务名称}应用服务
+ *
+ * <p>{详细描述服务的业务功能、职责和应用场景}</p>
+ * <p>主要功能包括:</p>
+ * <ul>
+ *   <li>{功能点1}</li>
+ *   <li>{功能点2}</li>
+ *   <li>{功能点3}</li>
+ * </ul>
+ *
+ * @author system
+ * @since 2025-01-21
+ */
+public class [Resource]ApplicationService {
+}
+```
+
+### 标准 JavaDoc 格式
+
+```java
+/**
+ * {服务名称}应用服务
+ * 
+ * <p>{详细描述服务的业务功能、职责和应用场景}
+ * 
+ * <p>主要功能包括:
+ * <ul>
+ *   <li>{功能点1}</li>
+ *   <li>{功能点2}</li>
+ *   <li>{功能点3}</li>
+ * </ul>
+ * 
+ * @author [作者名]
+ * @since [版本号或日期]
+ */
+public class [Resource]ApplicationService {
+}
+```
+
+## 字段注释模板
+
+```java
+/**
+ * <p>[依赖名称]</p>
+ * 
+ * <p>用于[用途说明],负责[具体职责]
+ */
+private final [DependencyType] [dependencyName];
+```
+
+## 方法注释模板
+
+### 创建方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>创建{资源名称}</p>
+ * 
+ * <p>实现{资源名称}创建的业务逻辑,包括:
+ * <ol>
+ *   <li>{步骤1}</li>
+ *   <li>{步骤2}</li>
+ *   <li>{步骤3}</li>
+ * </ol>
+ * </p>
+ * 
+ * @param request [Resource]CreateRequest {资源名称}创建请求对象,包含{字段列表}等信息
+ * @return [Resource]DTO {返回类型} 创建成功的{资源名称}信息 DTO
+ * @exception java.lang.IllegalArgumentException 当请求参数不合法时抛出
+ * @exception com.example.exception.BusinessException 当{业务规则}时抛出
+ */
+public [Resource]DTO create[Resource]([Resource]CreateRequest request) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 创建{资源名称}
+ * 
+ * <p>实现{资源名称}创建的业务逻辑,包括:
+ * <ol>
+ *   <li>{步骤1}</li>
+ *   <li>{步骤2}</li>
+ *   <li>{步骤3}</li>
+ * </ol>
+ * 
+ * @param request {资源名称}创建请求对象,包含{字段列表}等信息
+ * @return 创建成功的{资源名称}信息 DTO
+ * @throws IllegalArgumentException 当请求参数不合法时抛出
+ * @throws BusinessException 当{业务规则}时抛出
+ */
+public [Resource]DTO create[Resource]([Resource]CreateRequest request) {
+}
+```
+
+### 查询方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>根据 ID 查询{资源名称}</p>
+ * 
+ * <p>根据{资源名称} ID 从数据库查询{资源名称}信息,如果{资源名称}不存在则抛出异常。</p>
+ * 
+ * @param id java.lang.Long {资源名称}唯一标识符
+ * @return [Resource]DTO {返回类型} {资源名称}信息 DTO
+ * @exception com.example.exception.ResourceNotFoundException 当{资源名称}不存在时抛出
+ */
+public [Resource]DTO findById(Long id) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 根据 ID 查询{资源名称}
+ * 
+ * <p>根据{资源名称} ID 从数据库查询{资源名称}信息,如果{资源名称}不存在则抛出异常。
+ * 
+ * @param id {资源名称}唯一标识符
+ * @return {资源名称}信息 DTO
+ * @throws ResourceNotFoundException 当{资源名称}不存在时抛出
+ */
+public [Resource]DTO findById(Long id) {
+}
+```
+
+### 更新方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>更新{资源名称}</p>
+ * 
+ * <p>实现{资源名称}更新的业务逻辑,包括:
+ * <ol>
+ *   <li>验证{资源名称}是否存在</li>
+ *   <li>验证更新数据的合法性</li>
+ *   <li>执行更新操作</li>
+ * </ol>
+ * </p>
+ * 
+ * @param id java.lang.Long {资源名称}唯一标识符
+ * @param request [Resource]UpdateRequest {资源名称}更新请求对象
+ * @return [Resource]DTO {返回类型} 更新后的{资源名称}信息 DTO
+ * @exception com.example.exception.ResourceNotFoundException 当{资源名称}不存在时抛出
+ * @exception java.lang.IllegalArgumentException 当请求参数不合法时抛出
+ */
+public [Resource]DTO update[Resource](Long id, [Resource]UpdateRequest request) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 更新{资源名称}
+ * 
+ * <p>实现{资源名称}更新的业务逻辑,包括:
+ * <ol>
+ *   <li>验证{资源名称}是否存在</li>
+ *   <li>验证更新数据的合法性</li>
+ *   <li>执行更新操作</li>
+ * </ol>
+ * 
+ * @param id {资源名称}唯一标识符
+ * @param request {资源名称}更新请求对象
+ * @return 更新后的{资源名称}信息 DTO
+ * @throws ResourceNotFoundException 当{资源名称}不存在时抛出
+ * @throws IllegalArgumentException 当请求参数不合法时抛出
+ */
+public [Resource]DTO update[Resource](Long id, [Resource]UpdateRequest request) {
+}
+```
+
+### 删除方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>删除{资源名称}</p>
+ * 
+ * <p>根据{资源名称} ID 删除{资源名称},执行逻辑删除操作。</p>
+ * 
+ * @param id java.lang.Long {资源名称}唯一标识符
+ * @exception com.example.exception.ResourceNotFoundException 当{资源名称}不存在时抛出
+ */
+public void delete[Resource](Long id) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 删除{资源名称}
+ * 
+ * <p>根据{资源名称} ID 删除{资源名称},执行逻辑删除操作。
+ * 
+ * @param id {资源名称}唯一标识符
+ * @throws ResourceNotFoundException 当{资源名称}不存在时抛出
+ */
+public void delete[Resource](Long id) {
+}
+```
+
+### 分页查询方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>分页查询{资源名称}列表</p>
+ * 
+ * <p>根据查询条件分页查询{资源名称}列表,支持{查询条件列表}等条件筛选。</p>
+ * 
+ * @param query [Resource]QueryRequest {资源名称}查询请求对象,包含分页参数和查询条件
+ * @return com.baomidou.mybatisplus.core.metadata.IPage&lt;[Resource]DTO&gt; {返回类型} 分页结果,包含{资源名称}列表和分页信息
+ */
+public IPage<[Resource]DTO> page[Resource]([Resource]QueryRequest query) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 分页查询{资源名称}列表
+ * 
+ * <p>根据查询条件分页查询{资源名称}列表,支持{查询条件列表}等条件筛选。
+ * 
+ * @param query {资源名称}查询请求对象,包含分页参数和查询条件
+ * @return 分页结果,包含{资源名称}列表和分页信息
+ */
+public IPage<[Resource]DTO> page[Resource]([Resource]QueryRequest query) {
+}
+```
+
+## 使用说明
+
+1. **替换占位符**:
+   - `{服务名称}` - 替换为实际的服务名称,如"用户"、"订单"等
+   - `{资源名称}` - 替换为实际的资源名称,如"用户"、"订单"等
+   - `[Resource]` - 替换为实际的类名,如"User"、"Order"等
+   - `{功能点}` - 替换为实际的功能点描述
+   - `{字段列表}` - 替换为实际的字段列表
+
+2. **选择格式**:
+   - 如果项目遵循《JAVA 编程规范》,使用"Java 编程规范格式(严格)"
+   - 如果项目使用标准 JavaDoc,使用"标准 JavaDoc 格式"
+
+3. **方法注释**:
+   - 根据方法的实际功能选择合适的模板
+   - 补充具体的业务逻辑描述
+   - 明确参数和返回值的含义

+ 258 - 0
skills/java-code-comments/templates/domain-service-comment-template.md

@@ -0,0 +1,258 @@
+# Domain Service 类注释模板
+
+## 类注释模板
+
+### Java 编程规范格式(严格)
+
+```java
+/**
+ * {服务名称}领域服务
+ *
+ * <p>{详细描述服务的领域职责和业务逻辑}</p>
+ * <p>主要功能包括:</p>
+ * <ul>
+ *   <li>{功能点1}</li>
+ *   <li>{功能点2}</li>
+ * </ul>
+ *
+ * @author system
+ * @since 2025-01-21
+ */
+public class [Resource]DomainService {
+}
+```
+
+### 标准 JavaDoc 格式
+
+```java
+/**
+ * {服务名称}领域服务
+ * 
+ * <p>{详细描述服务的领域职责和业务逻辑}
+ * 
+ * <p>主要功能包括:
+ * <ul>
+ *   <li>{功能点1}</li>
+ *   <li>{功能点2}</li>
+ * </ul>
+ * 
+ * @author [作者名]
+ * @since [版本号或日期]
+ */
+public class [Resource]DomainService {
+}
+```
+
+## 字段注释模板
+
+```java
+/**
+ * <p>[依赖名称]</p>
+ * 
+ * <p>用于[用途说明],负责[具体职责]
+ */
+private final [DependencyType] [dependencyName];
+```
+
+## 方法注释模板
+
+### 业务规则验证方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>验证{业务规则名称}</p>
+ * 
+ * <p>验证{业务规则}是否满足,如果不满足则抛出业务异常。</p>
+ * 
+ * @param entity [Resource] {资源名称}实体对象
+ * @exception com.example.exception.BusinessException 当{业务规则}不满足时抛出
+ */
+public void validate[BusinessRule]([Resource] entity) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 验证{业务规则名称}
+ * 
+ * <p>验证{业务规则}是否满足,如果不满足则抛出业务异常。
+ * 
+ * @param entity {资源名称}实体对象
+ * @throws BusinessException 当{业务规则}不满足时抛出
+ */
+public void validate[BusinessRule]([Resource] entity) {
+}
+```
+
+### 领域计算方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>计算{计算项名称}</p>
+ * 
+ * <p>根据{输入参数}计算{计算项},计算规则包括:
+ * <ol>
+ *   <li>{计算步骤1}</li>
+ *   <li>{计算步骤2}</li>
+ *   <li>{计算步骤3}</li>
+ * </ol>
+ * </p>
+ * 
+ * @param entity [Resource] {资源名称}实体对象
+ * @return java.math.BigDecimal {返回类型} 计算后的{计算项}值
+ */
+public BigDecimal calculate[CalculationItem]([Resource] entity) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 计算{计算项名称}
+ * 
+ * <p>根据{输入参数}计算{计算项},计算规则包括:
+ * <ol>
+ *   <li>{计算步骤1}</li>
+ *   <li>{计算步骤2}</li>
+ *   <li>{计算步骤3}</li>
+ * </ol>
+ * 
+ * @param entity {资源名称}实体对象
+ * @return 计算后的{计算项}值
+ */
+public BigDecimal calculate[CalculationItem]([Resource] entity) {
+}
+```
+
+### 领域转换方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>转换{转换目标}</p>
+ * 
+ * <p>将{源对象}转换为{目标对象},转换过程中会进行{转换规则}等处理。</p>
+ * 
+ * @param source [SourceType] {源对象},包含{字段列表}
+ * @return [TargetType] {返回类型} 转换后的{目标对象}
+ */
+public [TargetType] convertTo[Target]([SourceType] source) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 转换{转换目标}
+ * 
+ * <p>将{源对象}转换为{目标对象},转换过程中会进行{转换规则}等处理。
+ * 
+ * @param source {源对象},包含{字段列表}
+ * @return 转换后的{目标对象}
+ */
+public [TargetType] convertTo[Target]([SourceType] source) {
+}
+```
+
+### 领域聚合方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>聚合{聚合目标}</p>
+ * 
+ * <p>将多个{资源名称}聚合为{聚合结果},聚合规则包括:
+ * <ul>
+ *   <li>{聚合规则1}</li>
+ *   <li>{聚合规则2}</li>
+ * </ul>
+ * </p>
+ * 
+ * @param entities java.util.List&lt;[Resource]&gt; {资源名称}实体列表
+ * @return [AggregateType] {返回类型} 聚合后的{聚合结果}
+ */
+public [AggregateType] aggregate[Target](List<[Resource]> entities) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 聚合{聚合目标}
+ * 
+ * <p>将多个{资源名称}聚合为{聚合结果},聚合规则包括:
+ * <ul>
+ *   <li>{聚合规则1}</li>
+ *   <li>{聚合规则2}</li>
+ * </ul>
+ * 
+ * @param entities {资源名称}实体列表
+ * @return 聚合后的{聚合结果}
+ */
+public [AggregateType] aggregate[Target](List<[Resource]> entities) {
+}
+```
+
+### 领域事件处理方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>处理{领域事件名称}</p>
+ * 
+ * <p>当{触发条件}时,处理{领域事件},执行{处理逻辑}等操作。</p>
+ * 
+ * @param event [EventType] {领域事件}对象,包含{事件信息}
+ */
+public void handle[Event]([EventType] event) {
+}
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 处理{领域事件名称}
+ * 
+ * <p>当{触发条件}时,处理{领域事件},执行{处理逻辑}等操作。
+ * 
+ * @param event {领域事件}对象,包含{事件信息}
+ */
+public void handle[Event]([EventType] event) {
+}
+```
+
+## 使用说明
+
+1. **替换占位符**:
+   - `{服务名称}` - 替换为实际的服务名称,如"用户"、"订单"等
+   - `{资源名称}` - 替换为实际的资源名称,如"用户"、"订单"等
+   - `[Resource]` - 替换为实际的类名,如"User"、"Order"等
+   - `{功能点}` - 替换为实际的功能点描述
+   - `{业务规则}` - 替换为实际的业务规则描述
+
+2. **选择格式**:
+   - 如果项目遵循《JAVA 编程规范》,使用"Java 编程规范格式(严格)"
+   - 如果项目使用标准 JavaDoc,使用"标准 JavaDoc 格式"
+
+3. **方法注释**:
+   - 领域服务方法通常关注业务规则、计算、转换等核心领域逻辑
+   - 方法注释应重点描述领域规则和业务逻辑
+   - 避免描述技术实现细节,专注于业务语义
+
+4. **领域服务特点**:
+   - 领域服务通常是无状态的
+   - 方法通常处理跨聚合的业务逻辑
+   - 方法名应体现领域概念和业务语义

+ 279 - 0
skills/java-code-comments/templates/feign-service-comment-template.md

@@ -0,0 +1,279 @@
+# Feign Service Interface 类注释模板
+
+## 类注释模板
+
+### Java 编程规范格式(严格)
+
+```java
+/**
+ * {服务名称}Feign远程服务接口
+ *
+ * <p>通过Feign调用{目标服务}的远程接口</p>
+ * <p>主要功能:</p>
+ * <ul>
+ *   <li>{接口功能1}</li>
+ *   <li>{接口功能2}</li>
+ * </ul>
+ *
+ * @author system
+ * @since 2025-01-21
+ */
+@FeignClient(name = "{service-name}", path = "/api/{resource}")
+public interface [Resource]FeignService {
+}
+```
+
+### 标准 JavaDoc 格式
+
+```java
+/**
+ * {服务名称}Feign远程服务接口
+ * 
+ * <p>通过Feign调用{目标服务}的远程接口
+ * 
+ * <p>主要功能:
+ * <ul>
+ *   <li>{接口功能1}</li>
+ *   <li>{接口功能2}</li>
+ * </ul>
+ * 
+ * @author [作者名]
+ * @since [版本号或日期]
+ */
+@FeignClient(name = "{service-name}", path = "/api/{resource}")
+public interface [Resource]FeignService {
+}
+```
+
+## 方法注释模板
+
+### GET 请求方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>查询{资源名称}</p>
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,查询{资源名称}信息。</p>
+ * 
+ * @param id java.lang.Long {资源名称}唯一标识符
+ * @return [Resource]DTO {返回类型} {资源名称}信息 DTO
+ * @exception com.example.exception.FeignException 当远程调用失败时抛出
+ */
+@GetMapping("/{id}")
+[Resource]DTO get[Resource](@PathVariable("id") Long id);
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 查询{资源名称}
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,查询{资源名称}信息。
+ * 
+ * @param id {资源名称}唯一标识符
+ * @return {资源名称}信息 DTO
+ * @throws FeignException 当远程调用失败时抛出
+ */
+@GetMapping("/{id}")
+[Resource]DTO get[Resource](@PathVariable("id") Long id);
+```
+
+### POST 请求方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>创建{资源名称}</p>
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,创建{资源名称}。</p>
+ * 
+ * @param request [Resource]CreateRequest {资源名称}创建请求对象
+ * @return [Resource]DTO {返回类型} 创建成功的{资源名称}信息 DTO
+ * @exception com.example.exception.FeignException 当远程调用失败时抛出
+ */
+@PostMapping
+[Resource]DTO create[Resource](@RequestBody [Resource]CreateRequest request);
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 创建{资源名称}
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,创建{资源名称}。
+ * 
+ * @param request {资源名称}创建请求对象
+ * @return 创建成功的{资源名称}信息 DTO
+ * @throws FeignException 当远程调用失败时抛出
+ */
+@PostMapping
+[Resource]DTO create[Resource](@RequestBody [Resource]CreateRequest request);
+```
+
+### PUT 请求方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>更新{资源名称}</p>
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,更新{资源名称}信息。</p>
+ * 
+ * @param id java.lang.Long {资源名称}唯一标识符
+ * @param request [Resource]UpdateRequest {资源名称}更新请求对象
+ * @return [Resource]DTO {返回类型} 更新后的{资源名称}信息 DTO
+ * @exception com.example.exception.FeignException 当远程调用失败时抛出
+ */
+@PutMapping("/{id}")
+[Resource]DTO update[Resource](@PathVariable("id") Long id, @RequestBody [Resource]UpdateRequest request);
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 更新{资源名称}
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,更新{资源名称}信息。
+ * 
+ * @param id {资源名称}唯一标识符
+ * @param request {资源名称}更新请求对象
+ * @return 更新后的{资源名称}信息 DTO
+ * @throws FeignException 当远程调用失败时抛出
+ */
+@PutMapping("/{id}")
+[Resource]DTO update[Resource](@PathVariable("id") Long id, @RequestBody [Resource]UpdateRequest request);
+```
+
+### DELETE 请求方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>删除{资源名称}</p>
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,删除{资源名称}。</p>
+ * 
+ * @param id java.lang.Long {资源名称}唯一标识符
+ * @exception com.example.exception.FeignException 当远程调用失败时抛出
+ */
+@DeleteMapping("/{id}")
+void delete[Resource](@PathVariable("id") Long id);
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 删除{资源名称}
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,删除{资源名称}。
+ * 
+ * @param id {资源名称}唯一标识符
+ * @throws FeignException 当远程调用失败时抛出
+ */
+@DeleteMapping("/{id}")
+void delete[Resource](@PathVariable("id") Long id);
+```
+
+### 查询列表方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>查询{资源名称}列表</p>
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,查询{资源名称}列表,支持{查询条件}等条件筛选。</p>
+ * 
+ * @param query [Resource]QueryRequest {资源名称}查询请求对象,包含查询条件
+ * @return java.util.List&lt;[Resource]DTO&gt; {返回类型} {资源名称}列表
+ * @exception com.example.exception.FeignException 当远程调用失败时抛出
+ */
+@GetMapping("/list")
+List<[Resource]DTO> list[Resource]([Resource]QueryRequest query);
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 查询{资源名称}列表
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,查询{资源名称}列表,支持{查询条件}等条件筛选。
+ * 
+ * @param query {资源名称}查询请求对象,包含查询条件
+ * @return {资源名称}列表
+ * @throws FeignException 当远程调用失败时抛出
+ */
+@GetMapping("/list")
+List<[Resource]DTO> list[Resource]([Resource]QueryRequest query);
+```
+
+### 分页查询方法
+
+#### Java 编程规范格式(严格)
+
+```java
+/**
+ * <p>分页查询{资源名称}列表</p>
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,分页查询{资源名称}列表。</p>
+ * 
+ * @param query [Resource]QueryRequest {资源名称}查询请求对象,包含分页参数和查询条件
+ * @return com.baomidou.mybatisplus.core.metadata.IPage&lt;[Resource]DTO&gt; {返回类型} 分页结果,包含{资源名称}列表和分页信息
+ * @exception com.example.exception.FeignException 当远程调用失败时抛出
+ */
+@PostMapping("/page")
+IPage<[Resource]DTO> page[Resource](@RequestBody [Resource]QueryRequest query);
+```
+
+#### 标准 JavaDoc 格式
+
+```java
+/**
+ * 分页查询{资源名称}列表
+ * 
+ * <p>通过Feign调用{目标服务}的{接口路径}接口,分页查询{资源名称}列表。
+ * 
+ * @param query {资源名称}查询请求对象,包含分页参数和查询条件
+ * @return 分页结果,包含{资源名称}列表和分页信息
+ * @throws FeignException 当远程调用失败时抛出
+ */
+@PostMapping("/page")
+IPage<[Resource]DTO> page[Resource](@RequestBody [Resource]QueryRequest query);
+```
+
+## 使用说明
+
+1. **替换占位符**:
+   - `{服务名称}` - 替换为实际的服务名称,如"用户"、"订单"等
+   - `{目标服务}` - 替换为实际的目标服务名称,如"用户服务"、"订单服务"等
+   - `{service-name}` - 替换为实际的 Feign 服务名称(配置中的服务名)
+   - `{resource}` - 替换为实际的资源路径
+   - `{资源名称}` - 替换为实际的资源名称,如"用户"、"订单"等
+   - `[Resource]` - 替换为实际的类名,如"User"、"Order"等
+   - `{接口功能}` - 替换为实际的接口功能描述
+   - `{接口路径}` - 替换为实际的接口路径
+
+2. **选择格式**:
+   - 如果项目遵循《JAVA 编程规范》,使用"Java 编程规范格式(严格)"
+   - 如果项目使用标准 JavaDoc,使用"标准 JavaDoc 格式"
+
+3. **方法注释**:
+   - Feign 接口方法注释应明确说明调用的目标服务和接口路径
+   - 所有方法都应说明可能抛出的 FeignException
+   - 参数和返回值应与远程服务接口保持一致
+
+4. **Feign 接口特点**:
+   - 接口方法通常对应远程服务的 REST API
+   - 方法签名应与远程服务接口保持一致
+   - 异常处理通常统一为 FeignException
+   - 需要配置正确的 @FeignClient 注解参数