命名规范
1 命名概述
名称应该说明“什么”而不是“如何”。通过避免使用公开基础实现(它们会发生改变)的名称,可以保留简化复杂性的抽象层。例如,可以使用 getNextStudent(),而不是 getNextArrayElement()。
命名原则是:
选择正确名称时的困难可能表明需要进一步分析或定义项的目的。使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。表现力强的名称是为了帮助人们阅读;因此,提供人们可以理解的名称是有意义的。不过,请确保选择的名称符合适用语言的规则和标准。
以下几点是推荐的命名方法。
1、避免容易被主观解释的难懂的名称,如AnalyzeThis(),或者属性名 xxK8。这样的名称会导致多义性。
2、在类属性的名称中包含类名是多余的,如 Book.bookTitle。而是应该使用 Book.title。
3、只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index)。
4、在变量名中使用互补对,如 min/max、begin/end 和 open/close。
5、布尔变量名应该包含 is,这意味着 Yes/No 或 True/False 值,如 fileIsFound。
6、在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag,而是使用更具描述性的名称,如 documentFormatType。 (此项只供参考)
7、即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i 或 j。 可能的情况下,尽量不要使用原义数字或原义字符串,如
For i = 1 To 7。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解。2.缩写
为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:
1 不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 getWindow,而不要使用 getWin。
2 不要使用计算机领域中未被普遍接受的缩写。
3 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 缩
写,用 OLAP 作为 On-line Analytical Processing 的缩写。
4在使用缩写时,对于超过两个字符长度的缩写请使用大小写。例如,使用 HtmlButton 而不是 HTMLButton。但是,应当大写仅有两个字符的缩写,如,System.IO,而不是 System.Io。- 3. 接口
以下规则概述接口的命名指南:
1、用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。
2、使用 意义完整的英文描述
3、少用缩写。
4、给接口名称加上字母 I 前缀,以指示该类型为接口。在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。
5、不要使用下划线字符 (_)。
6、当类是接口的标准执行时,定义这一对类/接口组合就要使用相似的名称。两个名称的不同之处
只是接口名前有一个I前缀。
以下是正确命名的接口的示例。
public interface IServiceProvider
public interface IFormatable
以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。
public interface IComponent {
// Implementation code goes here.
}
public class Component: IComponent {
// Implementation code goes here.
- 4. 参数
以下规则概述参数的命名指南:
3、 使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称
及其类型可用于在大多数情况下确定它的含义。
2、对参数名称使用首字母小写,其余单词首字母大写。
3、 使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工
具将提供有关参数的类型的有意义的信息。因此, 通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
4、 不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的
版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。
5、不要给参数名称加匈牙利语类型表示法的前缀。
以下是正确命名的参数的示例。
public Type getType(string typeName)
public String format(string format) - 5. 属性
以下规则概述属性的命名指南:
1、属性名使用意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法。
2、属性名不能与方法名相同。
3、属性名可以和公有方法参数相同,不能和局部变量相同,引用非静态成员变量时使用 this 引用,引用静态成员变量时使用类名引用。
下面是正确的命名:
private String customerName;
private int orderNumber;
private String smpSession - 6. 常量
Java里面的常量用public static final 开头定义
以下规则概述常量的命名指南:
所有单词大写,多个单词之间用 “_” 隔开。 如
public static final string PAGE_TITLE = “Welcome”;
数据库
- 2.1 数据库对象命名
项目的表在命名时,都以项目简写开头,以和框架表做区分 2.1 基本命名规则
基本数据库对象命名
2.2 关于命名的约定
变量(T-SQL编程中声明的变量)、过程(存储过程或触发器等)、实体(表、字段)应该根据他们所代表的实体意义和进程作用来命名。以下是命名中常用的一些约定来进行规范:
5、 多使用面向公司业务的术语,而不是面向计算机的术语
6、 如果可以在字典里找到一个词的缩写,就用这个做为缩写,比如:Mon(Monday)、Dec(December)
7、 删除单词元音(词首字母除外)和每个单词的重复字母来缩写一个单词。比如:Current = Crnt、Address = Adr、Error = Err、Average = Avg
8、 不要使用有歧异的缩写(一般是语音上的歧义)。比如b4(before)、xqt(execute),4tran(Fortran)
2.3 表格、字段的命名**
在给表格、字段命名约定中可以参考以下几点来为表格、字段命名:
9、 表名、字段名起为单数,如客户信息表起为Customer,而不要用Customers
10、 避免无谓的表格后缀,如一张存储客户信息的数据表,可以起名为Customer,而不需要增加后缀名CustomerInfo,因为大家都知道表本来就是存储信息的
11、 约定俗成的字段名前/后缀,在给字段命名过程中会发现很多字段都是有相同共性的如代表时间、数量、真假类型等,对于这种同一类型的字段,应该使用统一的前缀或者后缀去标识它,如所有表示时间的字段,统一以 Date 来作为结尾,所有表示数目的字段,都应该以Count作为结尾,所有代表链接的字段,均为Url结尾,布尔类型的值均以 Is、Has 或者 Can开头
12、 字段命名时需注意的一个问题,如有张数据表存储用户信息(User),绝大部分人会选择以UserId、UserPassword、UserName来定义表中字段,那么在已知存储的是针对用户信息的前提下,可以选择简化表中字段为UserId、Password、Name,这里面UserId仍然保持表名原因在于可能会作为表的外键的字段建议还是使用表名+字段- 2.4 主键的命名
主键命名规范一般定义为pk_列名
如果主键为复合主键,可以考虑定义为pk_StudentCourse,包含了两个字段StudentId 和 CourseId - 2.5 外键的命名
外键的命名为 fk_外键所在的表名_外键引用的表名。
因为外键所在的表为从表,所以上式可以写为 fk_从表名_主表名。 - 2.6 触发器的命名
触发器命名基本由三部分构成:
13、 前缀(tr),描述了数据库对象的类型。
14、 基本部分,描述触发器所加的表。
15、 后缀(_I、_U、_D),显示了修改语句(Insert, Update及Delete) - 2.7.7 存储过程的命名
存储过程命名构成:
16、 前缀(pr),描述了数据库对象的类型。
17、 采用名词放前面,动词放后面的规则命名,如针对Employees 表的存储过程,可以命名为prEmployeeInsert、prEmployeeUpdate。
18、 存储过程中参数的命名,入口参数,建议与其对应的字段名相