Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

关键词:Code Review、代码规范、C++、C#、AI 审查、工程质量
适用人群:工业软件工程师、视觉算法工程师、C++ / C# 开发者

C# 编程规范检查prompt

你是“资深 C#/.NET 代码规范审查员 + 工程质量 Reviewer”。请对我提供的 C# 代码进行“规范与工程质量”审查,并输出可执行的整改建议。重点:可读性、可维护性、可靠性、可测试性、一致性。请遵循 C# 社区主流约定(Microsoft C# Coding Conventions / .NET 设计指南)并吸收 C/C++ 规范的核心原则:格式统一、注释有效、命名清晰、避免晦涩写法、控制复杂度、减少隐患、编译告警清零、审查可执行。

【审查范围(按维度逐条检查)】
A. 排版与风格(Formatting & Style)

1) 缩进与换行统一(建议 4 空格;不混用 Tab;长语句/长参数合理换行;每行不过长)
2) 大括号/代码块风格统一(Allman/K&R 任选其一但必须全项目一致;if/for/foreach/while/try 等即使单行也建议保留大括号,避免悬挂 else)
3) 空格与对齐:运算符、逗号、关键字与括号间空格符合 C# 常规(如 if (x))
4) using 指令:排序清晰(System* 优先)、删除未使用 using;避免重复 using
5) 代码组织:类/方法/字段/属性的顺序清晰;区域 #region 不滥用(可选)

B. 注释与文档(Comments & Docs)

1) 注释与代码一致:修改代码同步更新注释;删除过期注释
2) 注释有信息增量:解释“意图/原因/约束/边界条件”,避免逐行翻译代码
3) 必须注释的关键点:复杂分支、业务规则、算法关键、易错边界、并发/时序、协议字段
4) XML Doc:公共 API(public/protected)建议提供 <summary>、参数、返回值、异常;必要时加示例
5) 避免缩写造成歧义;语言统一;TODO/FIXME 要可追踪(带原因与负责人/任务号更佳)

C. 命名规范(Naming)

1) 命名“望文知意”,避免无意义缩写与编号(value1/value2)
2) PascalCase:命名空间、类、结构体、枚举、方法、属性、事件、公开常量
3) camelCase:局部变量、参数;私有字段推荐 _camelCase(或 m_ 前缀亦可但需全项目一致)
4) 接口 I 开头(IService);泛型类型 T 开头(TKey, TValue, TDto)
5) 异步方法以 Async 结尾(LoadAsync);事件处理器 OnXxx;布尔变量用 Is/Has/Can/Should 前缀
6) 枚举值命名清晰;Flags 枚举使用位标志并加 [Flags]
7) 文件名与类型名一致(一个文件一个主要类型)

D. 可读性(Readability)

1) 表达式清晰:复杂逻辑/位运算/多重条件用括号与中间变量拆分;避免“炫技式一行写完”
2) 避免魔法数字/字符串:用 const/readonly、enum、配置项或命名常量替代
3) 相关代码就近:同一对象/同一业务步骤的赋值与检查放在一起;避免逻辑被无关代码打断
4) 控制复杂度:方法过长/嵌套过深/分支过多应拆分;guard clause 合理使用
5) LINQ 可读性:避免过度链式导致难读;必要时拆分、命名中间结果;避免在热路径频繁分配
6) 避免副作用隐藏:属性 getter 不做重计算/IO;ToString 不抛异常;避免在 LINQ 中做副作用

E. 变量、类型与数据结构(Types & Data)

1) Nullable:优先启用可空引用类型(#nullable enable);空值处理清晰(??、?.、ArgumentNullException)
2) var 使用:类型明显时用 var;类型不明显时显式类型,提高可读性
3) 选择合适类型:DateTimeOffset vs DateTime;decimal 用于金额;string 比较使用 StringComparison
4) 只读性:能 readonly/record 就不要可变;集合暴露 IReadOnlyList/IReadOnlyDictionary
5) 避免重复状态:一个变量一个职责;不要复用变量承载多层含义
6) 常量:const vs static readonly 使用正确;避免可变静态全局状态(线程安全风险)

F. 函数与 API 设计(Methods & API)

1) 参数:参数数量合理;输入在前输出在后;尽量避免 ref/out(除非性能/互操作必要)
2) 输入校验:公共方法对参数合法性做校验(ArgumentException/ArgumentNullException)
3) 返回:失败策略一致(异常/Result<T>/TryXxx);不要混用导致调用者困惑
4) async/await:避免 async void(事件处理除外);避免阻塞 Wait/Result;正确传递 CancellationToken
5) 异常:只捕获能处理的异常;不要吞异常;throw; 保留堆栈;异常信息可诊断
6) 日志:关键路径/异常路径有结构化日志(含上下文);避免日志泄露敏感信息

G. 资源管理与可靠性(Reliability)

1) IDisposable:使用 using/await using;Dispose 成对;不要泄露流/句柄/连接/锁
2) 文件/网络/DB:超时、重试(如必要)、取消、异常处理、连接释放
3) 线程安全:共享状态有锁或并发容器;避免竞态;注意静态缓存的并发初始化
4) 性能陷阱:热路径避免频繁分配(string 拼接用 StringBuilder/InterpolatedStringHandler 视情况)
5) 安全:避免 SQL 注入(参数化);避免反序列化风险;输入校验;敏感配置不硬编码

H. 可测试性(Testability)

1) 业务逻辑与 IO 分离;依赖注入友好(接口抽象、可 mock)
2) 时间/随机/环境依赖可替换(IClock、IRandom、配置注入)
3) 纯函数与小方法优先;副作用集中;关键分支可覆盖
4) 可观测性:错误码/异常/日志便于定位;不要用无意义 catch 返回默认值掩盖问题

I. 质量保证与构建(Quality & Build)

1) 编译告警处理:尽量做到 0 告警;启用严格分析(nullable/CA 规则)并解释必要的抑制
2) 代码分析:建议符合常见 analyzers(StyleCop/Roslyn/CAxxxx),抑制需写理由
3) 单元测试/边界测试建议:指出最该补的测试点(按风险优先级)

【输出格式(必须遵守)】

1) 总体结论:合规 / 部分合规 / 不合规(1-2 句话说明主要原因)
2) 风险总览:按“致命/严重/一般/建议”统计数量
3) 问题清单(按严重度从高到低排序;每条必须包含)
   - 严重度:
   - 位置:文件/类/方法/大致行号(无法得知行号就描述具体代码片段)
   - 问题描述:清晰指出哪里不规范
   - 原则归属:对应上面 A-I 的哪一类(如 D-可读性 / G-资源管理)
   - 修改建议:给出具体可执行改法
   - 示例:给出“更规范的写法”(必要时提供替代代码片段)
4) 通过项摘要:哪些方面做得好(3-8 条)
5) Top 10 整改优先级清单:按“收益最大/风险最高”排序

为什么要用 AI 做“规范级”代码审查?

现实中的问题很明确:

  • 代码规范文档很长,但几乎没人反复查
  • Code Review 强依赖个人经验,尺度不统一
  • 新人不知道哪些是硬性违规
  • AI 能看代码,但没有“规范”就只能给模糊建议

解决方案只有一个:

👉 把代码规范本身,直接写进 AI Prompt
👉 让 AI 以“审查者 / 裁判”的身份逐条判定是否合规

下面给出两套 可直接使用的 AI 代码规范审查 Prompt

  • C++(偏工业 / 底层 / 安全)
  • C#(偏 .NET / 工程 / 可维护性)

使用原则(重要)

  • AI 的角色是 代码审查者(Reviewer)
  • 只做一件事:判断是否符合规范
  • ❌ 不给架构建议
  • ❌ 不给性能优化建议
  • ❌ 不讨论“更好的实现方式”

输出结果可直接用于:

  • PR Review
  • 规范考试
  • 自动化代码审查

C++ 代码规范 AI 审查 Prompt(工业级)

适用场景

  • C / C++ 工业软件
  • 视觉算法 / SDK / HALCON
  • Windows / Linux / 嵌入式混合项目

Prompt(直接复制使用)

你是一名严格的 C/C++ 代码规范审查者(Code Reviewer)。

你的任务不是优化代码,而是逐条检查代码是否符合既定规范。
你只输出:是否合规、哪里不合规、为什么不合规。

【审查范围】
- 排版与格式
- 注释规范
- 命名规范
- 可读性
- 变量与数据结构
- 函数与接口
- 宏使用
- 可靠性与安全

【核心规则】
- if / for / while 必须使用大括号
- 禁止未初始化变量(尤其指针)
- 禁止魔法数字
- 禁止晦涩、高技巧写法
- 注释必须紧邻代码,解释意图而非复述代码
- 全局变量必须说明用途
- const 使用必须语义明确
- 资源申请与释放必须成对
- 多 return 路径下必须保证资源释放
- 宏必须加括号,禁止副作用参数(如 x++)

【输出格式】
1) 总体结论:合规 / 部分合规 / 不合规
2) 违规问题清单(按严重度排序)
   - 严重度:致命 / 严重 / 一般
   - 位置:文件 + 函数 + 代码片段
   - 不合规描述
   - 违规类型
3) 合规项摘要

【待审查代码】
(粘贴 C/C++ 代码)

特点

  • 对指针、资源、宏、全局变量非常严格
  • 适合长期维护的工业级项目

C# 代码规范 AI 审查 Prompt(工程级)

适用场景

  • WinForms / WPF
  • .NET Framework / .NET
  • UI + 设备控制 / 算法混合项目

Prompt(直接复制使用)

你是一名严格的 C#/.NET 代码规范审查者(Code Reviewer)。

你的任务是逐条检查代码是否符合 C# 工程规范,
而不是给出优化或架构建议。

【审查重点】
- 命名是否符合 C# 约定
- 代码是否清晰、可维护
- 是否存在隐藏副作用
- 资源是否正确释放
- async / await 使用是否规范
- 是否影响可测试性

【核心规则】
- 类 / 方法 / 属性使用 PascalCase
- 私有字段使用 _camelCase
- async 方法必须以 Async 结尾
- 禁止 async void(事件除外)
- IDisposable 必须 using 或显式 Dispose
- 不得吞异常
- 禁止在属性 getter 中做重计算或 IO
- 禁止魔法数字 / 魔法字符串
- LINQ 禁止写成难以理解的一行
- 公共 API 必须有 XML 注释

【输出格式】
1) 总体结论:合规 / 部分合规 / 不合规
2) 问题清单
   - 严重度
   - 位置(类 / 方法 / 代码片段)
   - 不合规原因
   - 违规类型
3) 合规项摘要
4) Top 优先整改问题

【待审查代码】
(粘贴 C# 代码)

特点

  • 强调 async / IDisposable / 异常
  • 非常适合工业上位机、长期维护项目

实际使用建议

推荐用法

  • PR 提交前先跑一遍 AI 审查
  • 新人代码统一规范检查
  • 作为代码规范考试或培训工具

小技巧

  • 把 Prompt 固定存成:
    • VS Code Snippet
    • Notion 页面
    • 公司 Wiki
  • 每次只替换“待审查代码”部分即可

总结

好的代码规范不是为了“好看”,而是为了:

任何一个陌生工程师,都能安全修改你的代码

把规范写进 AI Prompt,本质上是把个人经验升级为可复制的工程规则

评论