From 15d6a73ac1aa9245115e9aa953d4fec7755d6548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E8=A1=97=E9=95=BF=E5=AE=89?= Date: Sat, 18 Oct 2025 14:32:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20docs/=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83=E6=96=87=E6=A1=A3?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/后端代码规范文档.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 docs/后端代码规范文档.md diff --git a/docs/后端代码规范文档.md b/docs/后端代码规范文档.md new file mode 100644 index 0000000..d1824a6 --- /dev/null +++ b/docs/后端代码规范文档.md @@ -0,0 +1,12 @@ +1.命名规范: + 全局采用小驼峰命名:aBbCc,特定情况除外,例如:.NET编译器要求方法名为大驼峰 + Controllers下控制器请采用:自定义命名+Controller + Services下服务请采用:自定义命名+Service + Dtos下模型请采用:自定义命名+Dto + +2.文件(夹)规范: + Controllers:写控制器、Actions,用于写处理请求相关代码,禁止直接进行数据库交互。若要交互数据库,请先在services内写好业务逻辑再进行调用 + Services:用于写业务逻辑,数据库交互相关。 + Dtos:用于存放不同层级之间数据类型转换相关模型类,例如返回用户信息,需要剔除密码等敏感信息,不可直接返回数据库模型类。 + Models:数据库模型类,一般情况请勿改动 + Appsettings:此文件用于储存配置文件,数据库连接字符串,redis连接字符串,配置相关内容请写在此文件内,禁止硬编码到业务代码内 From f4b2e87e7d1299164202328ce9b18a4e3837583f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E8=A1=97=E9=95=BF=E5=AE=89?= Date: Sat, 18 Oct 2025 14:51:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20docs/=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83=E6=96=87=E6=A1=A3?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/后端代码规范文档.md | 79 ++++++++++++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 11 deletions(-) diff --git a/docs/后端代码规范文档.md b/docs/后端代码规范文档.md index d1824a6..6dbdf9a 100644 --- a/docs/后端代码规范文档.md +++ b/docs/后端代码规范文档.md @@ -1,12 +1,69 @@ -1.命名规范: - 全局采用小驼峰命名:aBbCc,特定情况除外,例如:.NET编译器要求方法名为大驼峰 - Controllers下控制器请采用:自定义命名+Controller - Services下服务请采用:自定义命名+Service - Dtos下模型请采用:自定义命名+Dto +# 项目规范文档 -2.文件(夹)规范: - Controllers:写控制器、Actions,用于写处理请求相关代码,禁止直接进行数据库交互。若要交互数据库,请先在services内写好业务逻辑再进行调用 - Services:用于写业务逻辑,数据库交互相关。 - Dtos:用于存放不同层级之间数据类型转换相关模型类,例如返回用户信息,需要剔除密码等敏感信息,不可直接返回数据库模型类。 - Models:数据库模型类,一般情况请勿改动 - Appsettings:此文件用于储存配置文件,数据库连接字符串,redis连接字符串,配置相关内容请写在此文件内,禁止硬编码到业务代码内 +## 1. 命名规范 + +* **全局命名** + + * 采用 **小驼峰命名法**(camelCase),例如:`aBbCc`。 + * 特殊情况除外,例如 **.NET 编译器要求方法名使用大驼峰**(PascalCase)。 + +* **各层命名规范** + + * **Controllers**:自定义命名 + `Controller` + * **Services**:自定义命名 + `Service` + * **Dtos**:自定义命名 + `Dto` + +--- + +## 2. 文件/文件夹规范 + +| 文件夹 | 功能描述 | 注意事项 | +| -------------------- | -------------------------- | -------------------------------------------- | +| **Controllers** | 存放控制器和 Actions,用于处理请求和响应 | 禁止直接操作数据库。如需数据库操作,应先在 Services 层编写业务逻辑再调用 | +| **Services** | 存放业务逻辑代码,包括数据库交互 | 应在 Service 层处理所有业务逻辑,保证 Controller 层纯粹用于请求处理 | +| **Dtos** | 存放不同层之间的数据传输模型(DTO) | 用于数据类型转换,例如返回用户信息时需剔除密码等敏感信息。禁止直接返回数据库模型类 | +| **Models** | 存放数据库模型类(Entity) | 一般情况下请勿随意修改 | +| **appsettings.json** | 存放配置文件,如数据库连接字符串、Redis 配置等 | 禁止在业务代码中硬编码配置信息,统一放在此文件中 | + +--- + +## 3. Service 编写与使用规范 + +### 3.1 编写 Service + +1. 在 `Interface/Services` 文件夹下创建接口,定义业务方法框架。 +2. 提交接口代码至 Gitea,合并并通过审核。 +3. 在 `Services` 文件夹下新建类,实现上述接口。 + +### 3.2 注册 Service + +1. 在 `Configs/ServiceCollectionExtensions.cs` 文件的 `AddAllService` 方法中添加: + +```csharp +services.AddTransient<接口类型, 实现类>(); +``` + +2. 根据业务逻辑选择生命周期: + + * **AddTransient**:瞬时 + * **AddScoped**:请求范围 + * **AddSingleton**:单例 + +### 3.3 在 Controller 中使用 Service + +1. 在 Controller 内定义属性: + +```csharp +private readonly IDemo _demo; +``` + +2. 在构造函数中通过依赖注入接收接口实例: + +```csharp +public WeatherForecastController(IDemo demo) +{ + _demo = demo; +} +``` + +3. 在 Controller 方法中使用 `_demo` 调用业务逻辑方法。