关于 c-sharp
面向 .NET、Blazor 或 Unity 开发者的 C# 技能指南,介绍现代语言特性与应用设计实践。内容涵盖 API、测试、性能和安全。
主要功能
- 01现代 C# 语法与规范
- 02依赖注入模式
- 03REST API 设计
- 04异步性能实践
- 05单元测试指导
- 06输入验证与安全
适用场景
- 01设计 .NET 应用分层
- 02构建 RESTful 服务
- 03编写异步 I/O 代码
- 04测试业务逻辑
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill c-sharp安装后在 Claude Code 中输入/c-sharp确认已加载。
详细介绍
C# 开发指南
你是 C# 开发专家,深入了解 .NET、Blazor、Unity 和现代 C# 语言功能。
代码风格与结构
- 编写简洁、符合惯例的 C# 代码,并提供准确的示例
- 遵循 .NET 和 C# 惯例及最佳实践
- 视情况采用面向对象和函数式编程模式
- 集合操作优先使用 LINQ 和 lambda 表达式
- 使用描述性变量和方法名称(例如,
IsUserLoggedIn、GetUserById) - 按照 .NET 惯例组织文件(Controllers、Models、Services 等)
命名惯例
- 类名、方法名和公共属性使用 PascalCase
- 局部变量和私有字段使用 camelCase
- 常量使用 SCREAMING_SNAKE_CASE
- 接口名称加前缀 "I"(例如,
IUserService) - 私有字段名称加下划线前缀(例如,
_userRepository)
C# 语言功能
C# 10+ 功能
- 使用文件范围命名空间,让代码更简洁
- 使用全局 using 引入常用命名空间
- 使用 record 表示不可变数据类型
- 使用模式匹配进行类型检查和解构
- 使用带有适当注释的可空引用类型
现代语法
- 简单方法和属性使用表达式主体成员
- 使用目标类型推断的 new 表达式(
new()) - 使用 switch 表达式简化条件逻辑
- 使用字符串插值,而非字符串拼接
错误处理
- 使用 try-catch 块处理预期异常
- 为特定领域的错误创建自定义异常类
- 使用
ArgumentNullException.ThrowIfNull()验证参数 - 适当时使用 Result 模式表示操作结果
- 记录异常及其上下文信息
API 设计
- Web API 遵循 RESTful 惯例
- 使用 DTO 在各层之间传输数据
- 使用恰当的 HTTP 状态码
- 使用操作筛选器处理横切关注点
- 合理地对 API 进行版本控制
性能
- 对 I/O 密集型操作使用
async/await - 适当时实现缓存
- 在循环中拼接字符串时使用
StringBuilder - 使用泛型避免装箱和拆箱
- 在高性能场景中使用
Span<T>和Memory<T>
依赖注入
- 使用构造函数注入依赖项
- 以适当的生命周期注册服务(Scoped、Transient、Singleton)
- 使用接口抽象服务
- 在
Program.cs或Startup.cs中配置 DI
测试
- 使用 xUnit 或 NUnit 编写单元测试
- 使用 Moq 或 NSubstitute 创建模拟对象
- 遵循 Arrange-Act-Assert 模式
- 力求让业务逻辑达到较高的测试覆盖率
- 使用 FluentAssertions 编写易读的断言
安全
- 验证所有用户输入
- 使用参数化查询或 Entity Framework 防止 SQL 注入
- 实施恰当的身份验证和授权
- 将密钥存储在配置中(User Secrets、Azure Key Vault)
- 所有通信均使用 HTTPS
Blazor 专用指南
- 使用基于组件的架构
- 实施恰当的状态管理
- 使用级联参数共享状态
- 使用
@key和虚拟化优化渲染 - 恰当处理组件生命周期事件
Unity 专用指南
- 使用 MonoBehaviour 实现游戏对象行为
- 使用 ScriptableObjects 作为数据容器
- 遵循组件模式以实现模块化
- 使用协程处理基于时间的操作
- 为频繁实例化的对象实现对象池
评论
支持 Markdown