一、.NET 官方 + 企业通用代码规范
1. 命名规范(最核心)
遵循 PascalCase / camelCase 严格区分,禁止拼音、无意义命名。
| 类型 | 规范 | 示例 |
| 类、接口、方法、属性 |
PascalCase |
UserService、GetUserById() |
| 私有字段 |
_camelCase |
_userRepository |
| 方法参数、局部变量 |
camelCase |
userId、userName |
| 常量 |
PascalCase |
const int MaxRetryCount = 3; |
| 接口 |
I + PascalCase |
IUserRepository |
| 泛型类型 |
T + 描述 |
TResult、TEntity |
2. 代码格式规范
- 缩进:4 空格
- 大括号:独占一行(.NET 官方风格)
- 一行一个语句,不堆叠代码
- 文件长度:建议 < 300 行,类 < 50 行方法
- 方法长度:建议 < 20 行(复杂业务最多 50 行)
3. 语法最佳实践
- 优先使用
var(类型明确时)
- 优先使用
string.IsNullOrEmpty() / string.IsNullOrWhiteSpace()
- 集合优先
IEnumerable<T> / IList<T> 接口声明
- 禁止硬编码字符串、魔法数字,抽成常量 / 配置
- 异步方法必须以
Async 结尾:GetUserAsync()
- 异常不捕获
catch(Exception) 盲目捕获,只捕获预期异常
- 日志不记录敏感数据(密码、手机号、身份证)
4. 架构与分层规范
- 控制器只做:参数校验 → 调用服务 → 返回结果
- 业务逻辑全部放在 Service / Manager
- 数据访问放在 Repository / EF Core
- 禁止在控制器写 SQL、写业务逻辑
- 依赖注入优先构造函数注入,禁止属性注入
- 领域模型与 DTO 严格分离(不直接返回 Entity)
二、.NET CodeReview 检查清单
1. 基础代码质量
2. 功能与逻辑正确性
3. 性能与安全
4. 可维护性
5. .NET 专项检查(ASP.NET Core / EF Core)
三、.NET 重构技巧
1. 快速识别坏味道(需要重构的信号)
- 方法太长(>50)
- 类太大(>500)
- 重复代码
- 嵌套过深(if 嵌套 ≥3 层)
- 长参数列表(≥5 个参数)
- 一个类做太多事
2. 常用重构技巧(C#)
1)提取方法(Extract Method)
if (user.Age >= 18 && user.IsVerified && !user.IsBlacklisted)
{
// 一堆逻辑
}
好
if (CanAccessService(user))
{
// 逻辑
}
private bool CanAccessService(User user)
{
return user.Age >= 18 && user.IsVerified && !user.IsBlacklisted;
}
2)提取变量(Extract Variable)
把复杂表达式命名,可读性暴增。
3)合并重复代码
相同逻辑 >2 次出现 → 抽成公共方法 / 扩展方法。
4)减少嵌套(Guard Clauses 卫语句)
坏
if (user != null)
{
if (user.Id > 0)
{
// ...
}
}
好
if (user == null) return;
if (user.Id <= 0) return;
// 正常逻辑
5)长参数 → 封装成对象(DTO/Model)
// 坏
CreateUser(string name, int age, string phone, string email, string address)
// 好
CreateUser(CreateUserDto dto)
6)用 DTO 隔离领域对象
不把 EF Entity 直接返回给 API,避免字段泄露、序列化异常。
7)使用扩展方法简化重复逻辑
如字符串、集合、验证逻辑。
8)拆分大类(按职责拆分)
- UserService → UserAuthService、UserInfoService、UserOrderService
9)消除魔法字符串 / 魔法数字
// 坏
if (status == 1)
// 好
const int ActiveStatus = 1;
if (status == ActiveStatus)
10)用 LINQ 简化循环
让集合操作更简洁、更易读。
来源:https://www.cnblogs.com/chuansheng/p/19915884 |