尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

GitHub Copilot 技能实战:基于 dotnet-design-pattern-review 的 .NET/C 设计模式审查指南

GitHub Copilot 技能实战:基于 dotnet-design-pattern-review 的 .NET/C 设计模式审查指南 GitHub Copilot 技能实战基于 dotnet-design-pattern-review 的 .NET/C# 设计模式审查指南【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot导读本文围绕开源仓库 awesome-copilot 中收录的dotnet-design-pattern-review技能技能定义展开系统讲解如何借助 GitHub Copilot 对 C#/.NET 代码进行设计模式审查先明确该技能要求核查的 7 类必备设计模式再逐条展开 12 项审查清单最后给出 5 大改进焦点与仓库内配套资源姊妹技能、专家 Agent、插件安装方式。读完本文你将掌握一套可直接套用的 .NET 设计模式审查方法论并理解其在当前仓库技能体系中的定位与组合用法。一、技能定位只审查、不改码的只读审查器dotnet-design-pattern-review是仓库 skills 目录下的一个 Copilot Skill其元数据如下SKILL.md--- name: dotnet-design-pattern-review description: Review the C#/.NET code for design pattern implementation and suggest improvements. ---其核心工作方式SKILL.md为Review the C#/.NET code in ${selection} for design pattern implementation and suggest improvements for the solution/project. Do not make any changes to the code, just provide a review.需要特别强调的约束有两点审查范围${selection}是用户在编辑器中选中的代码片段或与之对应的解决方案/项目范围技能的作用域是当前选择而不是漫无目的地扫描整个解决方案。只读原则技能明确要求不要对代码做任何修改只提供审查意见Do not make any changes to the code, just provide a review。这与本仓库中dotnet-best-practices等审查类技能保持一致——审查类技能的产出是建议清单而非补丁。二、七大必备设计模式审查必须核对的骨架原技能文档开篇即定义了解决方案/项目中必须具备的设计模式清单SKILL.md。审查的第一步就是逐项核对这些模式是否真实落地而不是仅仅看起来用了某个名字。2.1 Command 模式命令处理要求核对以下具体形态SKILL.md泛型基类CommandHandlerTOptions配套接口ICommandHandlerTOptionsCommandHandlerOptions的继承体系静态方法SetupCommand(IHost host)用于命令注册。配套技能 dotnet-best-practices 进一步印证了这一约定应当使用带泛型基类的 Command Handler 模式例如CommandHandlerTOptions。可以推断这类命令处理器通常与 Microsoft.Extensions.Hosting / DI 容器配合通过IHost完成命令的解析与生命周期管理。审查时应核对基类是否承担了通用横切逻辑校验、异常映射、日志派生类是否只保留命令特有行为开闭原则。2.2 Factory 模式工厂要求核对复杂对象创建是否经由服务提供者集成SKILL.md。审查重点复杂依赖组合的对象是否封装了创建逻辑而非散落在调用方工厂是否通过 DI 容器IServiceProvider/IServiceScopeFactory解析依赖工厂是否遵循与容器一致的对象生命周期见下方 DI 一节。2.3 依赖注入DI要求核对四项SKILL.md细节可结合 dotnet-best-practices 展开主构造函数语法C# 12如public class MyClass(IDependency dependency)避免冗长的字段赋值样板空值校验构造函数中对必填依赖使用ArgumentNullException.ThrowIfNull(...)接口抽象面向接口编程接口命名以I前缀接口隔离生命周期正确性Singleton / Scoped / Transient 的选择要与对象真实使用范围匹配避免 Scoped 服务被 Singleton 捕获造成隐式作用域问题。2.4 Repository 模式仓储要求核对异步数据访问接口为连接提供抽象SKILL.md。审查要点仓储接口是否全部为异步形态返回Task/TaskT且基于async/awaitdotnet-best-practices数据访问是否使用参数化查询防 SQL 注入见 dotnet-best-practices仓储层是否隔离了连接/事务管理细节使上层只依赖领域接口。2.5 Provider 模式提供者要求核对外部服务抽象数据库、AI、清晰契约、配置处理SKILL.md。在当前仓库语境下Provider 常指对 AI/ML 服务的封装——配套技能明确使用Microsoft.SemanticKernel进行 AI 操作并实施内核配置与服务注册dotnet-best-practices。审查时应确认Provider 对外暴露稳定契约具体服务实现可替换如测试时替换为模拟实现敏感配置API Key 等不硬编码。2.6 Resource 模式资源本地化要求核对SKILL.md使用ResourceManager提供本地化消息独立的.resx资源文件日志消息LogMessages与错误消息ErrorMessages分文件管理通过_resourceManager.GetString(MessageKey)访问资源dotnet-best-practices。仓库中另有专门技能 resx-source-generator-migration 讲解.resx的迁移改造如从ResXFileCodeGenerator迁移到Microsoft.CodeAnalysis.ResxSourceGenerator可作为 Resource 模式落地细节的延伸阅读——例如其中指出源生成器版本生成的是static partial访问器而传统ResXFileCodeGenerator生成非静态类审查资源相关代码时需留意这类访问方式的兼容性。2.7 补充未列出的模式是否缺失清单第一项还要求判断是否存在缺失的有益模式SKILL.md。专家级 Agent expert-dotnet-software-engineer 给出的参考面更宽Async/Await、Dependency Injection、Repository、Unit of Work、CQRS、Event Sourcing 以及 GoF 模式。审查时可根据业务复杂度提出增量建议例如引入IUnitOfWork包装仓储事务、用IHttpClientFactory管理 HTTP 客户端等但应避免为模式而模式。三、十二项审查清单逐条核对的检查表原文档给出了完整的审查清单SKILL.md共 12 项。以下逐条给出审查要点#清单项审查要点1设计模式已使用哪些模式Command / Factory / Provider / Repository 是否实现正确是否缺失有益模式2架构命名空间是否遵循{Core|Console|App|Service}.{Feature}约定Core 与 Console 项目是否职责分离模块化与可读性如何SKILL.md3.NET 最佳实践主构造函数、async/await与Task返回、ResourceManager使用、结构化日志、强类型配置SKILL.md4GoF 模式Command、Factory、Template Method、Strategy 等经典模式实现是否正确SKILL.md5SOLID 原则五项逐一排查SRP 职责单一、OCP 开闭、LSP 里氏替换、ISP 接口隔离、DIP 依赖倒置的违例点6性能async/await是否贯穿 I/O 链路、资源是否及时释放IDisposable/IAsyncDisposable、是否恰当使用ConfigureAwait(false)、是否存在可并行的处理机会7可维护性关注点是否分离、错误处理是否一致、配置使用是否正确8可测试性依赖是否经接口抽象、组件是否可 mock、异步是否可测、是否符合 AAAArrange-Act-Assert模式9安全性输入验证、凭据安全处理、参数化查询、异常信息是否避免泄露敏感细节10文档公共 API 是否有 XML 注释、参数/返回值说明、资源文件组织是否合理11代码清晰度命名是否体现领域概念、意图是否通过模式表达、结构是否自解释12整洁代码风格统一、方法与类规模适中、复杂度最小、重复消除关于第 3 项的结构化日志配套技能明确要求使用Microsoft.Extensions.Logging并通过 scope 携带有意义上下文dotnet-best-practices。关于第 8 项的测试栈仓库约定为MSTest FluentAssertions 断言 Moq 模拟、覆盖成功与失败场景、包含空参数校验测试dotnet-best-practices但需注意仓库同时收录了 xUnit / NUnit / TUnit 等多个测试技能见 csharp-dotnet-development 插件 的命令列表实际审查时应以目标项目已采用的框架为准不强求 MSTest。关于第 10 项的配置文档与强类型配置见下文改进焦点中的 Configuration 一节。四、五大改进焦点给出可落地的行动建议原文档在清单之外专门圈定了 5 个改进焦点领域SKILL.md要求审查输出必须结合项目架构与 .NET 最佳实践给出具体、可行动的建议。这 5 个领域是改进建议的优先级排序依据Command Handlers命令处理器在基类中集中做校验、统一错误处理、规范资源管理。这对应第 2.1 节中基类承载横切逻辑的落地检查。Factories工厂依赖配置是否正确、是否与 DI 容器集成、销毁disposal模式是否完备——特别是工厂创建的对象是否由其负责释放避免资源泄漏。Providers提供者连接管理、异步模式、异常处理与日志记录。Provider 封装外部服务数据库、AI其连接生命周期与故障降级是审查重点。Configuration配置数据注解与验证属性如Required、NotEmptyOrWhitespace、强类型配置类 IConfiguration绑定、支持appsettings.json、敏感值的安全处理dotnet-best-practices。审查时核对配置类是否在启动时校验、非法配置是否快速失败、密钥是否放入用户机密/环境变量而非源码。AI/ML 集成Semantic Kernel 模式、结构化输出处理、模型配置ChatCompletion、Embedding 等。配套技能要求使用结构化输出模式以获得可靠的 AI 响应dotnet-best-practices同时要求对 AI/ML 操作采用安全编码实践。改进建议的产出形态应遵循原文档要求Provide specific, actionable recommendations——即每条建议都应指明具体文件/类型/方法、问题原因、建议改法而不是泛泛的建议遵守 SOLID。五、使用方式与仓库内配套资源5.1 如何在 Copilot 中触发该技能该技能位于 skills/dotnet-design-pattern-review/SKILL.md属于仓库 skills 集合的一部分。使用方式为在编辑器选中待审查的 C#/.NET 代码对应${selection}通过支持 skills 的 GitHub Copilot 环境调用该技能随后 Copilot 会按上文骨架输出结构化审查意见。本仓库还收录了技能加载与规范类说明文档可参考 docs/README.skills.md 与 instructions/agent-skills.instructions.md 了解 skills 的编排与约束机制。5.2 与姊妹技能 dotnet-best-practices 的分工仓库中的 dotnet-best-practices 与本技能同属 .NET 审查体系二者互补dotnet-design-pattern-review聚焦设计模式与架构层面模式是否正确落地、架构是否清晰、SOLID 是否违例是本文主体dotnet-best-practices聚焦代码规范与工程实践XML 文档、async/await、测试栈、配置绑定、Semantic Kernel、日志并提供更多实现级细节例如主构造函数示例、ArgumentNullException校验、_resourceManager.GetString(MessageKey)访问方式等skills/dotnet-best-practices/SKILL.md。实际评审流程中可先用本技能做模式层审查再配合dotnet-best-practices做规范层审查也可组合专家 Agent 获得更全面的判断。5.3 配套 Agent 与插件仓库为 .NET 审查提供了更高阶的配套专家 Agent expert-dotnet-software-engineer.agent.md以专家工程师模式给出设计模式含 GoF、CQRS、Event Sourcing、SOLID、TDD/BDDxUnit/NUnit/MSTest、性能、安全五方面的指导可作为本技能审查结论的扩展视角插件 csharp-dotnet-development将dotnet-best-practices等技能打包为斜杠命令并提供expert-dotnet-software-engineerAgent。可通过如下命令安装plugins/csharp-dotnet-development/README.md#L6-L11copilot plugin install csharp-dotnet-developmentawesome-copilot安装后即可在 Copilot 中通过/csharp-dotnet-development:dotnet-best-practices等命令触发对应的审查与最佳实践提示plugins/csharp-dotnet-development/README.md#L18-L27。六、结语把审查从找茬升级为带证据的改进清单dotnet-design-pattern-review的价值在于它把一次代码评审固化为可重复执行的检查流程先核对 7 类必备模式是否真实落地再按 12 项清单逐条排查最后在 5 大焦点领域给出按优先级排列的、与项目架构对齐的行动建议。配合仓库内 dotnet-best-practices、expert-dotnet-software-engineer 与 csharp-dotnet-development 插件即可在 GitHub Copilot 中搭建一套覆盖模式层 规范层 专家层的完整 .NET 代码质量审查工作流。【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表