每个程序员需掌握的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。

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.使用解决方案领域的名字

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

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

时间: 2024-10-21 10:19:28

每个程序员需掌握的20个代码命名的相关文章

每个程序员需掌握的20个代码命名小贴士

代码中到处都需要命名.作为程序员,我们得给类命名,给变量命名,给函数命名,给参数命名,给命名空间命名,等等等等.下面有20条小贴士能帮助你提高你的命名能力. 1.使用能够表达意图的名字 名字得能告诉我们它要做什么,为什么存在,以及是如何工作的.选择能够表达意图的名字,将更有利于我们理解代码. <span style="font-size:14px;">int d; // elapsed time in days int elapsedTimeInDays; int days

每一个程序猿需掌握的20个代码命名小贴士

代码中到处都须要命名.作为程序猿.我们得给类命名,给变量命名,给函数命名,给參数命名.给命名空间命名,等等等等.以下有20条小贴士能帮助你提高你的命名能力. 1.使用可以表达意图的名字 名字得能告诉我们它要做什么,为什么存在,以及是怎样工作的.选择可以表达意图的名字.将更有利于我们理解代码. <span style="font-size:14px;">int d; // elapsed time in days int elapsedTimeInDays; int days

程序员编程利器:20款最好的免费的IDEs和编辑器

程序员编程利器:20款最好的免费的IDEs和编辑器 还没转眼明年可就大年三十了,忙的可真是晕头转了个向,看着亲朋好友们那让人欣羡的小肚腩,不禁感慨,岁月是一把猪饲料,绿了芭蕉,肥了那杨柳小蛮腰,可怜我“太挑食”,身为纯正的吃货却没有与吃货相称的体重(话说路飞的体重也和他的吃货属性不匹配啊喂!).趁着过年之际,各种红包层出不穷,什么微博红包.QQ红包.微信红包.支付宝红包等等等等,一个字:真俗!话说身为程序员最重要之一是什么?当然是开发环境和编辑器了.君不见一个好的IDE或者编辑器能带来的工作效率

程序员需谨记的8条团队开发原则(转)

当你从学校出来,找到第一份软件开发工作的时候,你就不再是一个单独作战的程序员了,你将会有一个团队,你的一举一动也将直接影响团队的效率和产出.下面这8条团队开发的基本原则,作为团队的一员,你必须谨记在心,这会对你和你的团队带来非同凡响的效果. 1.提交(签入)代码需要填写备注说明 团队开发中必定会使用一些类似svn的代码管理工具,在提交代码时填写备注,这个好处是不言而喻的.它可以帮你记录这次修改完成了哪些功能.修复了哪些bug,包括的团队的其他成员,也可以看到你这次提交代码所做的贡献. 2.每天汇

【转】程序员需谨记的8条团队开发原则

当你从学校出来,找到第一份软件开发工作的时候,你就不再是一个单独作战的程序员了,你将会有一个团队,你的一举一动也将直接影响团队的效率和产出.下面这8条团队开发的基本原则,作为团队的一员,你必须谨记在心,这会对你和你的团队带来非同凡响的效果. 1.提交(签入)代码需要填写备注说明 团队开发中必定会使用一些类似svn的代码管理工具,在提交代码时填写备注,这个好处是不言而喻的.它可以帮你记录这次修改完成了哪些功能.修复了哪些bug,包括的团队的其他成员,也可以看到你这次提交代码所做的贡献. 2.每天汇

程序员需谨记的8条团队开发原则(转)

当你从学校出来,找到第一份软件开发工作的时候,你就不再是一个单独作战的程序员了,你将会有一个团队,你的一举一动也将直接影响团队的效率和产出.下面这 8 条团队开发的基本原则,作为团队的一员,你必须谨记在心,这会对你和你的团队带来非同凡响的效果. 1.提交(签入)代码需要填写备注说明 团队开发中必定会使用一些类似 svn 的代码管理工具,在提交代码时填写备注,这个好处是不言而喻的.它可以帮你记录这次修改完成了哪些功能.修复了哪些 bug,包括的团队的其他成员,也可以看到你这次提交代码所做的贡献.

已35岁的C++语言重新获得程序员青睐:C++20将于年底完工

已经35岁的编程语言C++,依然深受程序员们的青睐. 在TIOBE公布的2019年4月编程语言指数中,C++居第三位,指数同比增长1.62%. 作为C语言的扩展,C++在1985年创建,最新的标准化版本C++17已经获得了大量编译器的支持,包括微软Visual Studio.GNU Compiler Collection (GCC)和Clang等.创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之

不要相信程序员在加班时间写的代码

不要相信一个程序员在加班时间写出来的代码. (软件工程的学说表明,连正常时间好好写的代码,也不要太相信.不过这不是本文的重点,略过不提.) (不懂代码的人,看到本文中的Java代码可以略过,不影响理解.) 创造力的时限 写代码,与写文章.绘画.思考复杂问题,并没有本质上的区别,都是创造性的活动. 每个人的创造力,都会随着身体状态而波动.广为人知的是,一个人年老体衰后,相比年富力强时,创造力会急剧下降.其实,人每天的状态起伏,也同样会剧烈影响这一点. 如果是拧螺丝,那么在精疲力尽.拧不动以前,身体

幸福村站——成都传智播客程序员写出你的烧烤代码

又是一个阳光明媚,风和日丽之天,如果作为程序员的你还在键盘上苦苦的想着下一串代码该怎么写的话,那你就弱爆了.俗语说得好,学习要劳逸结合,写代码更是需要清晰的思维,在传智播客Java基础班开班一个月后,班主任决定带着这群"猿猴们"去传说中的"幸福村"放松放松,我们也跟着一起去感受程序员们的烧烤代码的幸福吧! 带着好奇的心理走进了"幸福梅林站",一个又一个的农家乐园开始浮现在我们眼前,那里朴素的民风和美丽的风景让我们暂时忘却了学习上的烦恼和城市里的喧