- 关 键 词:
- .net
(C# Coding Standard有多个版本,本文根据较新的2.31版本翻译。)
对于第4条,我习惯直接用camel风格。
一、命名约定与风格
1、采用Pascal风格命名类型、方法和常量:
public class SomeClass
{
const int DefaultSize = 100;
public void SomeMethod()
{}
}2、采用camel风格命名局部变量和方法参数:
void MyMethod(int someNumber)
{
int number;
} 3、命名接口时采用I作为前缀:
interface IMyInterface
{} 4、命名私有成员变量时采用m_作为前缀,m_后面的部分采用Pascal风格:
public class SomeClass
{
private int m_Number;
} 5、自定义特性类采用Attribute作为前缀。
6、自定义异常类采用Exception作为前缀。
7、命名方法时使用动宾结构短语,例如ShowDialog()。
8、有返回值的方法应该有能描述其返回值的名称,例如GetObjectState()。
9、采用描述性的变量名。
1)避免单字符的变量名,例如i或t,而是采用index或temp代替。
2)对public和protected成员避免使用匈牙利命名法。
3)不要使用缩写(例如将number缩写为num)。
10、总是使用C#预定义的类型,而不是使用System命名空间中的别名。例如:
object NOT Object
string NOT String
int NOT Int32 11、类型名称的首字母通常使用大写。 当处理.NET类型Type时保留后缀Type。
// 正确:
public class LinkedList<K,T>
{}
// 避免:
public class LinkedList<KeyType,DataType>
{}
12、使用有意义的命名空间,例如产品名或公司名。
13、避免使用完全限定的类型名称,使用using语句代替。
14、避免在命名空间内使用using语句。
15、所有框架的命名空间都组合在一起,并放在自定义或第三方的命名空间下。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using MyCompany;
using MyControls;
16、使用委托推断而不是显式实例化委托。
delegate void SomeDelegate();
public void SomeMethod()
{}
SomeDelegate someDelegate = SomeMethod;
17、坚持严格的缩进。不要使用制表符或非标准的缩进,如一个空格。推荐是三个或四个空格,并且值应该是通过统一的。
18、注释缩进和其代码在同一水平上。
19、所有注释要经过拼写检查。拼错注释表示开发草率。
20、所有成员变量要声明在顶部,空一行分开属性或方法。
public class MyClass
{
int m_Number;
string m_Name;
public void SomeMethod1()
{}
public void SomeMethod2()
{}
} 21、声明本地变量尽可能接近第一次使用。
22、文件名应该体现它包含的类。
23、当使用分部类型且分别分配到一个文件时,每个文件以逻辑部分命名。例如: //In MyClass.cs
public partial class MyClass
{}
//In MyClass.Designer.cs
public partial class MyClass
{} 24、允许花括号({)放置在新一行。
25、匿名方法仿照普通方法的代码布局、排列和委托声明。(放置一个开放花括号在新一行): delegate void SomeDelegate(string someString);
//Correct:
void InvokeMethod()
{
SomeDelegate someDelegate = delegate(string name)
{
MessageBox.Show(name);
};
someDelegate("Juval");
}
//Avoid
void InvokeMethod()
{
SomeDelegate someDelegate = delegate(string name){MessageBox.Show(name);};
someDelegate("Juval");
}26、没有参数的匿名方法使用空的圆括号。只有在匿名方法可能被使用在任何委托上时省略括号: delegate void SomeDelegate();
//正确
SomeDelegate someDelegate1 = delegate()
{
MessageBox.Show("Hello");
};
//避免
SomeDelegate someDelegate1 = delegate
{
MessageBox.Show("Hello");
}; 27、Lambda表达式仿照普通方法的代码布局、排列和委托声明。省略变量类型和类型推断依赖,也使用圆括号。 elegate void SomeDelegate(string someString);
SomeDelegate someDelegate = (name)=>
{
Trace.WriteLine(name);
MessageBox.Show(name);
};28、当它们包含一个简单的语句时,只使用内嵌(in-line)的Lambda表达式。对内嵌的表达式避免要花括号或rerurn语句的多重声明。省略圆括号: delegate void SomeDelegate(string someString);
void MyMethod(SomeDelegate someDelegate)
{}
//正确:
MyMethod(name=>MessageBox.Show(name));
//避免
MyMethod((name)=>{Trace.WriteLine(name);MessageBox.Show(name);});
相关专题
- C#基础概念二十五问 (34次浏览)
- C#多线程学习—生产者和消费者 (33次浏览)
- 在C#.net中操作XML实例 (28次浏览)
- 截取字符串方法总结 (24次浏览)
- C#WIN窗体读取EXCEL存入SQL数据库 (24次浏览)
- C#与数据结构 (24次浏览)
- C#创建简单的验证码 (22次浏览)
- C#正则表达式整理备忘 (21次浏览)
- 用C#生成不重复的随机数 (21次浏览)
- 一个C#写的调用外部进程类 (21次浏览)



