Pascal
将每个单词的第一个字符大写、遇到两个字母的首字母缩略词时,两个字母都要大写
命名空间:使用公司名作为前缀、在第二级名称中使用稳定的与版本无关的产品名称
类型:名词或名词短语命名
结构:名词或名词短语命名
接口:形容词短语或偶尔用名词或名词短语命名接口,在接口名称前加上字母I作为前缀
方法:谓词或谓词短语
属性:名词短语或形容词
事件:谓词或谓词短语来命名事件,现在时态和过去时态让事件有先后的概念
字段:名词、名词短语、形容词来命名字段
枚举:使用单数形式的类型名称,除非枚举值是位域
Camel:约定仅用于参数名称,将除第一个单词之外的每个单词的第一个字符大写
参数:描述性参数名称
类和结构设计
考虑类型的实例比较小并且通常生存期较短或者通常嵌入在其他对象中,则定义结构
避免定义一个结构,除非具有所有一下特征:
1.它逻辑上表示单个值,类似于基元类型(int double等等)
2.它的实例大小小于16字节
3.它是不可变的
4.它不会频繁装箱
在所有其他情况下,应将类型定义为类
抽象类设计
请勿在抽象类型中定义公共或受保护的内部构造函数
请在抽象类中定义受保护的或内部构造函数
请至少提供一种继承自你交付的每个抽象类的具体类型
接口设计
需要某些通用API受到包含值类型的一组类型的支持
需要在已继承自其他类型的类型上支持其功能
至少提供一种作为接口的实现的类型
结构设计
确保所有实例数据设置为0、false、null的状态是有效的
c#不允许结构具有默认构造函数
枚举设计
务必将枚举用于强类型参数、属性和表示一组值集的返回值
务必首选使用枚举而不是静态常量
务必为简单枚举提供0值