.NET 开发模式
用于构建健壮、高性能且可维护应用程序的惯用 C# 和 .NET 模式。
何时激活
- 编写新的 C# 代码时
- 审查 C# 代码时
- 重构现有 .NET 应用程序时
- 使用 ASP.NET Core 设计服务架构时
核心原则
1. 优先使用不可变性
对数据模型使用记录和仅初始化属性。可变性应作为明确且有理由的选择。
// Good: Immutable value object
public sealed record Money(decimal Amount, string Currency);
// Good: Immutable DTO with init setters
public sealed class CreateOrderRequest
{
public required string CustomerId { get; init; }
public required IReadOnlyList<OrderItem> Items { get; init; }
}
// Bad: Mutable model with public setters
public class Order
{
public string CustomerId { get; set; }
public List<OrderItem> Items { get; set; }
}
2. 显式优于隐式
明确表达可空性、访问修饰符和意图。
// Good: Explicit access modifiers and nullability
public sealed class UserService
{
private readonly IUserRepository _repository;
private readonly ILogger<UserService> _logger;
public UserService(IUserRepository repository, ILogger<UserService> logger)
{
_repository = repository ?? throw new ArgumentNullException(nameof(repository));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public async Task<User?> FindByIdAsync(Guid id,…