每一个程序猿需掌握的20个代码命名小贴士
2017-06-11 11:24 tlnshuju 阅读(170) 评论(0) 编辑 收藏 举报代码中到处都须要命名。作为程序猿。我们得给类命名,给变量命名,给函数命名,给參数命名。给命名空间命名,等等等等。以下有20条小贴士能帮助你提高你的命名能力。
1.使用可以表达意图的名字
名字得能告诉我们它要做什么,为什么存在,以及是怎样工作的。选择可以表达意图的名字。将更有利于我们理解代码。
<span style="font-size:14px;">int d; // elapsed time in days int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays;</span>
在上面的片段中,我们仅仅能从凝视中知道变量d指的是什么。
于是阅读代码的人为了知道它的含义就不得不去寻找它的实例以获取线索。所以。要是我们可以好好命名这个变量,阅读代码的人就行瞬间知道这变量的含义。
2.不要怕在选择名字上花时间
你应该多试几种不同的名字,直至足以描写叙述其含义。千万不要害怕在这上面花时间。以后阅读你代码的人(包含你自己)将会因此而受益。
此外。一个描写叙述性的名称甚至还能有助于你在心中理清模块的设计。良好的命名的确须要花费时间。可是从长远来看,利大于弊。
3.重构名字
假设你在后面的开发过程中想到了一个更好的名字,那就不要犹豫。立即去改吧。
如今的IDE使得重构名字变得异常easy。
4.避免在名字中出现干扰词
比方Manager、Processor、Data、Info以及“我不知道这叫什么”的同义词。都是干扰词。假设你须要使用上面这些干扰词的话,那么说明你的命名可能太累赘了。
5.小心难以命名的类/功能
一个非常难命名的类或函数非常有可能是一个代码异味。这说明:
- 代码做得太多。
- 代码做得还不够。
- 你对此问题理解得还不够透彻。须要先获取很多其它的信息。
6.类名
类应该有个名词或名词词组的名字,如Customer、WikiPage、Account和AddressParser。继承性父类应该给个又短又有冲击力的名字。子类的名字应该长点,通过形容词来描写叙述其不同于它的父类之处,如SavingsAccount衍生于Account。
7.变量名
变量名也应该是名词。它们大多是由其指向的类衍生出去的。布尔变量应写成谓词的形式,如isEmpty和isTerminated,这样放到if语句才便于理解。
8.方法名
方法名应该是一个动词或动词词组,如postPayment()、deletePage()和save()。
訪问器和调整器应该分别前缀get和set。返回布尔值的方法应该前缀‘is’,如isPostable(),这样在if语句中才便于理解。
9.范围大小与变量名的长度
变量名的长度应和它的范围大小相匹配。假设变量的范围非常短,那么变量名的长度也应该非常短。
反之,变量名则应该长一点。更有描写叙述性。
10.范围大小与方法/类名的长度
对于方法和类名的长度则应该与其范围成反比。对于公共方法。短一点的名字会比較好,这是由于它们会被调用多次。私有方法仅仅在类的范围内被调用,长一点的名字反而能够作为文档使用。此条规则的例外是派生类的名字。类越派生,基类前所加的形容词就越多。名字也就越长。
11.一个概念一个词
为某个抽象概念选定一个词。然后就不要变了。比如作为不同类中的等效方法。get()、fetch()和retrieve()会让人混淆起来。保持一致的词汇是程序猿驾驭代码的重要工具。
12.不要将同一个词用于两个不同的概念
假设你遵循第11点——一个概念一个词的原则,那么就能够避免很多有着同样方法名的类。仅仅要參数列表和各种方法的返回值在语义上是等价的就没问题。
仅仅有当你将同一个词用于两个不同的概念时才会出现故障。
比如。我们能够在多个类中使用add()方法,通过加入或连接两个现有的值来创建一个新的值。假设我们之后又须要在类中引入一个add方法用于加入參数到集合中,这就会由于语义不同而导致问题。这样的新方法最好是改叫为insert()。
13.使用解决方式领域的名字
我们编写的代码今后可能会有其它程序猿来阅读。所以我们使用一些技术术语进行代码命名会带来非常大的优点。比方适当地使用算法名字、设计模式名字以及数学术语,这些命名方式非常可能会让其它程序猿更easy理解程序,引起共鸣。
14.使用问题领域的名字
假设实在找不到易于理解的技术术语来命名,那么也能够从问题领域来寻找合适的代码命名。当未来阅读你代码的程序猿不确定代码意义的时候,这将为他们提供一些问题的线索。
15.加入有意义的语境
大多数名字其本身是没有意义的,而且须要放到语境(类/函数/命名空间)中,才干让阅读代码的人理解它们指代的是什么。在某些情况下,可能须要前缀名称以补充语境。
比如,如果我们有一些用来表示地址的变量:firstName、lastName、street、houseNumber、city、state和zip。
如果仅仅看state这个变量,我们是非常难判断出它指的是什么意思,一个比較好的解决的方法就是将这些变量封装到Address类中。
16.不要加入没来由的语境
仅仅要意思明白。短一点的名字通常比长的好,所以不要多此一举地加入语境。名字前不应该被加缀一些能够从类/包/命名空间中判断的不必要的信息。
17.避免编码
鉴于如今的IDE的强大,我们已经不须要编码类型和范围信息到变量名和类名中。
这包含不必加入I至接口,由于使用代码的用户不须要知道他们的类正在向接口传递。
所以假设你一定要使用编码。那么最好是对实现进行编码而不是接口。
18.避免错误的信息
不要给一些错误的信息,由于这样会误导阅读代码的人。
假设你将一个实际支持数组的变量命名为accountList。那就非常easy让人得出错误的结论。
19.使用读不出来的名字
编程是一个社会化的活动。使用那些读不出来的名字仅仅会阻碍我们的讨论。
20.使用易搜索的名字
使用短而通用的名字会妨碍我们在代码库中搜索事物。这对我们操纵代码和重构非常有影响。
最后,你的代码一定能够完美的完毕了,当然还有其它重要的步骤。那就是给代码加层壳,即加密保护!
不要让自己好不easy辛辛苦苦写出来的代码开发好的程序为他人所利用,防患于未然。