C# 编码基础规范(得思斋Zero)
ABSTRACT
2017-12 得思斋博客文章。一套面向游戏团队的 C# 基础编码规范:从「为什么要统一规范」(破窗理论)出发,给出 17 条命名、注释、排版、声明规则,强调规范目的是需求快实现、Bug 快排除、合作快上手。
核心要点
- 统一规范的目的不是「代码像一个人写的」,而是需求快实现、Bug 快排除、合作快上手;引破窗理论:对坏代码的容忍会加速腐化。
- 金句:好的工程师只写绝对需要的代码,伟大的工程师删掉没用的代码。
- 文件头标准注释(版权/文件名/简述/创建与修改标识);行尾注释署名与日期。
- 命名:类与公有方法 Pascal;局部变量、私有方法、参数 camel(冲突用 this.);接口加 I 前缀;attribute 以 Attribute 结尾;异常以 Exception 结尾;方法用动宾短语(ShowDialog/CreateFile)。
- 成员变量:公有 Pascal、私有 camel 或 m_ 前缀;优先 private + get/set 属性暴露;数据载体类(XXXInfo)可全 public;布尔成员用 Is/Have 前缀。
- 静态字段 s_ 前缀;常量全大写下划线分隔。
- 排版:Tab 缩进;大括号新起一行;成员变量集中类顶部(例外:为避免 GC 把临时变量提升为成员的可就近放);局部变量就近声明。
- 文件名反映类内容,尽量一类一文件(partial 与私有类例外);namespace 用产品名/公司名。
- C# 公共 API 尽量不用默认参数:CLS 允许编译器忽略默认值,跨语言行为不一致,用方法重载替代(MSDN CA1026)。
- 规则刻意保持「基础」:太复杂的规范不利于推广执行。
关键实体与概念
Pascal/camel 命名法、破窗理论、属性 get/set、namespace、默认参数、CLS、代码分析 CA1026
关联概念
来源回溯
- 原始文件:
raw/ip/wechat_articles/C#编码基础规范 – 得思斋Zero.md(2017-12-27)
时效性评估
- 仍有效:命名约定与微软官方 C# 惯例基本一致,至今是团队规范的合理基线;破窗理论与「删代码」理念长青。
- 已过时:现代 C#(8.0+)普及后,社区更倾向 file-scoped namespace、record、隐式 using 等简洁风格;默认参数的跨语言顾虑在现代 .NET 已基本弱化;团队规范实践转向 .editorconfig + Roslyn Analyzer 自动化约束,而非文档约定。