C#编码规范 ................................................................................................................................. - 2 -
1 文件组织.......................................................................................................................... - 2 -
1.1 C#源文件 ............................................................................................................... - 2 - 1.2 目录安排 ............................................................................................................... - 2 - 2 缩进.................................................................................................................................. - 2 -
2.1 分行 ....................................................................................................................... - 2 - 3 注释.................................................................................................................................. - 2 -
3.1 块注释 ................................................................................................................... - 2 - 3.2 单行注释 ............................................................................................................... - 3 - 3.3文档注释 ................................................................................................................ - 3 - 4 声明.................................................................................................................................. - 3 -
4.1每行声明的数量 .................................................................................................... - 3 - 4.2 初始化 ................................................................................................................... - 3 - 4.3 类和接口的声明 ................................................................................................... - 3 - 5 语句.................................................................................................................................. - 4 -
5.1 简单语句 ............................................................................................................... - 4 - 5.2 返回语句 ............................................................................................................... - 4 - 5.3 If, if - else, if else - if else语句 ............................................................................. - 4 - 5.4 for / foreach语句 .................................................................................................. - 5 - 5.5 while / do – while语句 ......................................................................................... - 6 - 5.6 switch语句 ......................................................................................................... - 6 - 5.7 try – catch语句 .................................................................................................... - 6 - 5.8 属性 ....................................................................................................................... - 7 - 5.9 枚举 ....................................................................................................................... - 8 - 6 空白.................................................................................................................................. - 8 -
6.1 空行 ....................................................................................................................... - 8 - 6.2 内部空格 ............................................................................................................... - 8 - 7命名约定........................................................................................................................... - 8 -
7.1 ADO.NET 命名规范 ............................................................................................ - 9 - 7.2 WebControl 命名规范 ........................................................................................ - 9 - 7.3变量 ...................................................................................................................... - 10 - 7.4其他 ...................................................................................................................... - 10 - 8 编程实践........................................................................................................................ - 11 -
8.1 书写顺序 ............................................................................................................. - 11 - 8.2 成员可视性 ......................................................................................................... - 11 - 8.3功能单一 .............................................................................................................. - 12 - 8.4使用枚举 .............................................................................................................. - 12 - 8.5 捕获异常 ............................................................................................................. - 13 - 9.其他注意事项.............................................................................................................. - 13 -
C#编码规范
1 文件组织
1.1 C#源文件
把每个类都放在单独的文件中,文件名字和类名一致(用.CS作为扩展名)。类文件不要太长,不要超过2000LOC。必要时,分割代码,使结构更清晰。 1.2 目录安排
为每个命名空间创建一个目录(如,对于MyProject.TestSuite.TestTier使用MyProject/TestSuite/TestTier作为路径,不要使用带“.”的命名空间)。这样更易于映射命名空间到目录。
2 缩进
2.1 分行
如果表达式不适合单行显示,应根据下面通常的原则分行:
? 在一个逗号后换行 ? 在一个操作符后换行 ? 在表达式的高层次处换行
? 新行与前一行在同一层次,并与表达式的起始对
齐
方法分行的例子:
long MethodCall(expr1, expr2,
expr3, expr4, expr5); 算术表达式分行的例子: 好的:
var = a * b / (c – g + f) + 4 * z; 坏的风格,要避免: var = a * b / (c – g + f) + 4 * z;
第一个是好的,因为分行符合高层次规则。
3 注释
3.1 块注释
通常要避免块注释,而使用C#标准的///注释来描述。如果希望使用块注释,应该使用下面的风格: / * Line 1 * Line 2
- 2 -
* Line 3 */
块注释很少使用,通常是用来注释掉大块的代码。 3.2 单行注释
应该使用//注释掉一行代码,也可以用它注释掉代码块。当单行注释用来做代码解释时,必须要缩进到与代码对齐。 3.3文档注释
单行XML注释的形式如下: ///
多行XML注释的形式如下: ///
4 声明
4.1每行声明的数量
建议每行只有一个声明,还方便注释,如: int level; // indentation level int size; // size of table
变量的命名意义要明确。如果能够自解释,如indentLevel,就不用注释。 不好的:
int a, b; // What is ‘a’? What does ‘b’ stand for? 4.2 初始化
尽量在局部变量声明时进行初始化,例如: string name = myObject.Name; 或
int val = time.Hours;
注意:初始化对话框时,尽量使用语句:
Using (OpenFileDialog openFileDialog = new OpenFileDialog()) {
…… }
4.3 类和接口的声明
- 3 -
当写C#类和接口时,应按照下面的格式规则:
? 在方法名字和参数列表的起始括号“(”之间没有
空格
? 开括号“{”应出现在声明语句之后的下一行 ? 闭括号“}”自己占一行,并缩进到对应的开括号
位置
例如:
class MySample : MyClass, IMyInterface {
int myInt;
public MySample(int myInt) {
this.myInt = myInt; } void Inc() {
++myInt; }
void EmptyMethod() { } }
5 语句
5.1 简单语句
每行应该只包含一个语句。 5.2 返回语句
返回语句不应该带有最外面的括号。 不应该使用: return (n * (n + 1) / 2); 应该使用: return n * (n + 1) / 2;
5.3 If, if - else, if else - if else语句
- 4 -
if, if – else和if else – if else语句应该按照下面格式: if (condition) {
…… }
if (condition) {
…… } else {
…… }
if (condition) { …… }
else if (condition) { …… } else { …… }
注意:即使某条件下只有一个语句,也要使用大括号“{”“}”。后面的循环等语句也一样。 5.4 for / foreach语句 for语句形式如下: for (int i = 0; i < 5; ++i) { …… }
或者使用单行形式:
for (initialization; condition; updat);
- 5 -