C# 的基本代码规范

个人遵守的通用 C# 代码规范,其中参考了微软的代码规范。实际上在是使用一些框架开发时(例如 ASP.NET Core)也应该遵循一定的模式规范,但是本文只讨论一些比较通用的代码规范。

文章将从下面的几个方面来谈论规范:

  1. 代码排版
  2. 标识符命名
  3. 类型设计

代码排版

良好的代码排版是整洁代码目标的起点,方法中的代码应该按照逻辑功能分块,并以空行分隔。并在必要时,或者能够代码比较大的重用性的时候将部分块抽取成为函数,使之重用。

花括号应该另起一行,同时如何 if 后语句只有一句,可以省略花括号。if 条件后的语句应该另起一行,而不要写在一行

变量声明应该靠近使用他的地方。

标识符命名

方法类名以及属性都应该使用 Pascal 格式,变量字段应该使用小驼峰格式,如果成员字段不是常量应该以下划线开头以区别方法中的变量。

所有的派生类型命令应该遵循一定的规律,所以的自定义异常应该以 Exception 结尾,所以的自定义属性应该以 Attribute 结尾,所以的自定义容器类型应该以 Collection 结尾,
扩展方法所在的静态类应该以被扩展的类名+ Extensions 名称。

对于 abstract 类型不要命名为 XXBase,应当去一个取合适的名称。接口命名应该以 I 开头,接口的默认实现名称应该是接口名称去掉开头的 I,不要以 DefaultXXX 命名。大众熟识的
常用名称应该留给常用的标准实现,而给特别的详细的名称赋予到高级的,特定的实现。

相比前缀应当优先使用后缀,这样通过 IDE 的代码提示能够直接显示出来。

类型设计

对于实现了非托管资源的类型应该实现 IDispose 接口,并使用 Dispose 模式,如果关于关闭对应资源已有总所周知的方法,那么该方法应该与 Dispose 方法等价。如非清楚你自己在做什么
不要实现析构方法。

类型的继承层次不应该太深。

如果类型将要放入使用哈希表的类型中时,则应该同时重写 GetHashCode 和 Equals 方法,同时如果类型的 hashcode 相同那么则它们应该相等,需要注意加入到哈希表中的对象在他的生命周期中 hashcode
应该保持不变,否则哈希表将会混乱。

引用类型的 == 运算符应该使用比较应用,Equals 函数比较值相等性。值类型应该重写 == 运算和以及 Equals 函数,并使它们含义相同。

//... 略

posted @   秦晓  阅读(271)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示