每一个程序员需掌握的20个代码命名

代码中处处都须要命名。做为程序员,咱们得给类命名,给变量命名,给函数命名,给参数命名,给命名空间命名,等等等等。下面有20条小贴士能帮助你提升你的命名能力。程序员

1.使用可以表达意图的名字

名字得能告诉咱们它要作什么,为何存在,以及是如何工做的。选择可以表达意图的名字,将更有利于咱们理解代码。算法

int elapsedTimeInDays;  
int daysSinceCreation;  
int daysSinceModification;  
int fileAgeInDays;</span>  

在上面的片断中,咱们只能从注释中知道变量d指的是什么。因而阅读代码的人为了知道它的含义就不得不去寻找它的实例以获取线索。因此,要是咱们可以好好命名这个变量,阅读代码的人就可以瞬间知道这变量的含义。编程

2.不要怕在选择名字上花时间

你应该多试几种不一样的名字,直至足以描述其含义,千万不要惧怕在这上面花时间。之后阅读你代码的人(包括你本身)将会所以而受益。此外,一个描述性的名称甚至还能有助于你在心中理清模块的设计。良好的命名的确须要花费时间,可是从长远来看,利大于弊。设计模式

3.重构名字

若是你在后面的开发过程当中想到了一个更好的名字,那就不要犹豫,立刻去改吧。如今的IDE使得重构名字变得异常容易。数组

4.避免在名字中出现干扰词

好比Manager、Processor、Data、Info以及“我不知道这叫什么”的同义词,都是干扰词。若是你须要使用上面这些干扰词的话,那么说明你的命名可能太累赘了。函数

5.当心难以命名的类/功能

一个很难命名的类或函数颇有多是一个代码异味。这说明:工具

  • 代码作得太多。
  • 代码作得还不够。
  • 你对此问题理解得还不够透彻,须要先获取更多的信息。

6.类名

类应该有个名词或名词词组的名字,如Customer、WikiPage、Account和AddressParser。继承性父类应该给个又短又有冲击力的名字。子类的名字应该长点,经过形容词来描述其不一样于它的父类之处,如SavingsAccount衍生于Account。post

7.变量名

变量名也应该是名词。它们大可能是由其指向的类衍生出去的。布尔变量应写成谓词的形式,如isEmpty和isTerminated,这样放到if语句才便于理解。fetch

8.方法名

方法名应该是一个动词或动词词组,如postPayment()、deletePage()和save()。访问器和调整器应该分别前缀get和set。返回布尔值的方法应该前缀‘is’,如isPostable(),这样在if语句中才便于理解。编码

9.范围大小与变量名的长度

变量名的长度应和它的范围大小相匹配。若是变量的范围很短,那么变量名的长度也应该很短。反之,变量名则应该长一点,更有描述性。

10.范围大小与方法/类名的长度

对于方法和类名的长度则应该与其范围成反比。对于公共方法,短一点的名字会比较好,这是由于它们会被调用屡次。私有方法只在类的范围内被调用,长一点的名字反而能够做为文档使用。此条规则的例外是派生类的名字。类越派生,基类前所加的形容词就越多,名字也就越长。

11.一个概念一个词

为某个抽象概念选定一个词,而后就不要变了。例如做为不一样类中的等效方法,get()、fetch()和retrieve()会让人混淆起来。保持一致的词汇是程序员驾驭代码的重要工具。

12.不要将同一个词用于两个不一样的概念

若是你遵循第11点——一个概念一个词的原则,那么就能够避免许多有着相同方法名的类。只要参数列表和各类方法的返回值在语义上是等价的就没问题。只有当你将同一个词用于两个不一样的概念时才会出现问题。

例如,咱们能够在多个类中使用add()方法,经过添加或链接两个现有的值来建立一个新的值。若是咱们以后又须要在类中引入一个add方法用于添加参数到集合中,这就会由于语义不一样而致使问题。这种新方法最好是改叫为insert()。

13.使用解决方案领域的名字

咱们编写的代码从此可能会有其余程序员来阅读,因此咱们使用一些技术术语进行代码命名会带来很大的好处。好比适当地使用算法名字、设计模式名字以及数学术语,这些命名方式极可能会让其余程序员更容易理解程序,引发共鸣。

14.使用问题领域的名字

若是实在找不到易于理解的技术术语来命名,那么也能够从问题领域来寻找合适的代码命名。当将来阅读你代码的程序员不肯定代码意义的时候,这将为他们提供一些问题的线索。

15.添加有意义的语境

大多数名字其自己是没有意义的,而且须要放到语境(类/函数/命名空间)中,才能让阅读代码的人理解它们指代的是什么。在某些状况下,可能须要前缀名称以补充语境。例如,假设咱们有一些用来表示地址的变量:firstName、lastName、street、houseNumber、city、state和zip。若是只看state这个变量,咱们是很难推断出它指的是什么意思,一个比较好的解决办法就是将这些变量封装到Address类中。

16.不要添加没来由的语境

只要意思明确,短一点的名字一般比长的好,因此不要画蛇添足地添加语境。名字前不该该被加缀一些能够从类/包/命名空间中推断的没必要要的信息。

17.避免编码

鉴于如今的IDE的强大,咱们已经不须要编码类型和范围信息到变量名和类名中。这包括没必要添加I至接口,由于使用代码的用户不须要知道他们的类正在向接口传递。因此若是你必定要使用编码,那么最好是对实现进行编码而不是接口。

18.避免错误的信息

不要给一些错误的信息,由于这样会误导阅读代码的人。若是你将一个实际支持数组的变量命名为accountList,那就很容易让人得出错误的结论。

19.使用读不出来的名字

编程是一个社会化的活动,使用那些读不出来的名字只会阻碍咱们的讨论。

20.使用易搜索的名字

使用短而通用的名字会妨碍咱们在代码库中搜索事物。这对咱们操纵代码和重构颇有影响。

最后,你的代码必定能够完美的完成了,固然还有其余重要的步骤,那就是给代码加层壳,即加密保护!不要让本身好不容易辛辛苦苦写出来的代码开发好的程序为他人所利用,防患于未然!

转:http://blog.csdn.net/lz201234/article/details/44774647

相关文章
相关标签/搜索