更新 docs/后端代码规范文档.md

This commit is contained in:
西街长安 2025-10-18 14:51:26 +08:00
parent 15d6a73ac1
commit f4b2e87e7d

View File

@ -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` 调用业务逻辑方法。