良好的命名规范在项目开发或维护中有至关重要的作用。命名规范是一种约定,在遵循这一约定上为每一个代码维护人员(以下简称编码者)传递信息。
良好的命名规范相比与注释和文档能够更好的服务于编码者,因为它更直观更容易被使用。
遵循编码语言的基本命名规则
良好的命名规范首先应该遵循使用语言的基本命名规则如:
Java 基本命名规范:
1、项目名全部小写.
2、包名全部小写.
3、类名首字母大写,其余组成词首字母依次大写.
4、变量名,方法名首字母小写,如果名称由多个单词组成,除首字母外的每个单词的首字母都要大写.
5、常量名全部大写.
6、所有命名规则必须遵循以下规则 :
名称只能由字母、数字、下划线、$符号组成,不能以数字开头,名称不能使用Java中的关键字,坚决不允许出现中文及拼音命名。
此外再编码过程中还应当约定一些有利于项目迭代和代码维护规范
“min-length && max-information”原则
过长的命名不利于阅读也不利于书写。在保证明确表达意义的前提下尽量简短。
- 避免命名时重复使用词语,当在外层(类、包、模块)中已经明确表明的意义就无需再内层中重复表明如:
class student{
string getStudentName(){
return this.name;
}
}
我们已经再“类”部分表明了student
方法getStudentName
再次使用就重复了,因为当我们使用方法getStudentName
的时候已经明确的知道了student
这个信息。此时应该将方法简写为:getName
- 通过约定默认语义来省略哪些重复使用的命名词。我们经常会使用主键(ID)获取一个对象,那么我们可以做如下约定:如果获取条件为主键时我们默认省略它。如:
findById
可以简写成find
因为我们已经约定了默认条件为主键因此当使用者看到方法时也可以很好的理解它的意义。 - 不要使用一些难以理解的命名。我们每个人都会习惯使用一些短词或简写如这些变量名称:
str
、len
、max
、pwd
,如果您仅仅将它们作为变量名称或私有方法名称并无不可,但是对外暴露属性、供外部使用的方法使用类似的简称将会让使用者产生迷惑,毕竟并不是每一个人的简写习惯都是一样的。而且这让它们看起来不是那么专业。
使用有意义的名词
命名应该是有意义的,用描述性的词语来命名让我们通过词语能够知道它的意义和功能。
使用项目中已知的名词。如《领域驱动设计》一书中所提倡的“统一语言”,命名应该优先使用统一语言中的名词。
易于理解的结构
固定命名结构,对方法或属性命名约定固定的结构有利于我们对它理解知道它的意义、使用方法和约束条件等。
如:GetStudentByIdForView()
依次为动作、主要目、前置条件、场景,我们能够清晰知道方法通过Id
获取Student
用于展示(View
)
约定前缀或后缀
使用固定的前缀名或后缀名表明意义,如C#
中对接口约定以大写字母I为前缀。有意义的前缀或后缀在多人开发中非常有意义,它们让不同的编码者在不需要文档和交谈就能够理解其他人的设计。
假设我们有如下约定:
- 方法中以
Get
开始获取的对象返回为集合 - 方法中以
Find
开始获取对象返回结果为单个对象 - 我们将对象的组装(创建)逻辑都封装在以Factory结尾的对象中
- 数据转换类以Adapter为后缀
- 静态类以Global为后缀
当然类似的约定必须以具体的语言或项目为基础,
网友评论