一命名
用pascal规则来命名方法和类型
public class TextBox
{
public void DataBind()
{
}
}
用camel规则来命名局部变量和方法的参数
string userName
public AddUser(string userId byte[] password)
所有的成员变量前加前缀 _
public class Database
{
private string _connectionString
}
接口的名称加前缀 I
interface ICompare
{
int compare()
}
自定义的属性以Attribute结尾
public class AuthorAttribute Attribute
{
}
自定义的异常以Exception结尾
public class AppException Exception
{
}
方法的命名一般将其命名为动宾短语
ShowDialog()
CreateFile()
GetPath()
代码的缩进要用Tab而不要用space
局部变量的名称要有意义不要用xyz等等(除用于For循环变量中可使用ijklmn)
string userName
所有的成员变量声明在类的顶端用一个换行把它和方法分开
用有意义的名字命名namespace如产品名公司名
建议局部变量在最接近使用它时再声明
使用某个控件的值时尽量命名局部变量
把引用的系统的namespace和自定义或第三方的用一个换行把它们分开
文件名要能反应类的内容最好是和类同名一个文件中一个类或一组关连类
目录结构中要反应出namespace的层次
大括号{要新起一行
public class AuthorAttribute Attribute
{
}
二编码习惯
用C#预定义的类名而不要用别名
string userName 而不是 SystemString userName
int number 而不是 SystemInt
一行不要超过个字符
尽量不要手工更改机器生成的代码若必须更改一定要改成和机器生成的代码风格一样
关键的语句(包括声明关键的变量)必须要写注释
文字常量和数字常量不要硬编码应该用常量类或枚举代替
不准使用goto系列语句
不要声明public和protected的成员变量应用property
不要声明public的event应用事件访问器
public class Source
{
private EventHandler m_NumberChangeEvent
public event EventHandler NumberChangeEvent
{
add
{
m_NumberChangeEvent += value
}
remove
{
m_NumberChangeEvent = value
}
}
}
类型转换的使用规则
Animal animal = new Dog()
Dog dog = animal as Dog
if (dog != null)
{
}
生成和构建一个长的字符串时一定要使用StringBuilder而不用string
始终使用{ }包含if下的语句即使只有一条语句
switch语句一定要有default来处理意外情况
尽量少使用三目运算符 ? 而要使用if语句
尽量不用使用this引用除非是要调用类中的另一个Constructor
public class Person
{
public Person(string name)
{
}
public Person() this(Jim)
{
}
}