昨天和一位年轻朋友聊天,他告诉我在他写代码的时候,总会被变量命名所难到,不知道怎样命名变量是最有效的。
你是否也被类似的问题困扰过?
其实,我在一开始写代码的时候也为命名变量烦恼过。后来看了许多其他人的项目,请教了前辈的经验,慢慢也摸索出了变量命名方法和技巧,在此分享给大家,希望能帮到有类似疑惑的朋友。
关于变量命名,在此分享4点建议:
一、多读代码你可以回忆一下,你现在常用的那几个变量名称,它们中是不是有很大一部分最早是出现在别人的代码里?
必须承认,你所写的代码很多时候并不那么特殊。可能已经有无数前人遇到过相同需求,编写过相似代码。多看一些其他人的代码,你可以从中得到启发,为你未来构写代码、命名变量的时候提供灵感。
二、多读书籍编程是一种语言,语言都是后天习得的。作为编程语言能力的一部分,变量命名也可以通过学习习得。除了上述向别人的代码学习外,还有一个选项就是看英文书籍。
至于挑选书目,我建议要有针对性,可以选择一些和你当前业务场景相关的书。通过这些书,你可以在深入了解整个业务逻辑,同时还能在不经意间获得与业务相关的英语词汇,这对你变量起名帮助很大。
三、命名技巧关于变量、类名:
- 变量名一般使用英语,不要用动词,变量名通常建议使用名词,选择的名词需要直接指向该变量的意涵;
- 可以在名词前面添加修饰词来区分相似变量,修饰词可以是形容词,如sortKey中的sort,也可以是指向更细节的名词,如DataFrame中的Data;
- 如果该变量是基础数据类型,则通常使用名词的单数型式,如果该变量是诸如Array、List、Set这样的数据集合,则通常使用名词的复数形式作为变量名;
- 类名的命名技巧和变量基本一致,不过类名一般不使用复数。
关于函数名和方法名:
函数名和方法名的命名逻辑就比较多样了,这里的技巧分享仅作为抛砖引玉,欢迎补充:
- 方法命名的核心是动词:很多方法用纯动词来表达,如:concat、match等;
- 有些方法名会使用动宾词组:即“动词 作用对象名词”的形式。值得一提的是,这里的名词在逻辑上也往往可以是方法后面的参数,如:hasNext、trimEnd,这里的Next和End逻辑上也可以是has和trim的参数;
- 活用介词:介词是英语的一大特色,在我们给变量起名的时候也扮演了重要的角色,大量地出现在方法名中,如:startsWith、charAt等;
- 有些方法是以动名词的形式出现:通过动词向'er'、'ing'、'ed'的变形来命名方法。这类方法名的一大特点是,指向的结果往往是一个对象实例,常见的如constructor、cheching等;
- 最后一种方法名,就是纯名词的形式:这种方法通常是输出和获取该对象中某个特定的属性或者变量,这种命名方式本质上就是命名变量,可以参考上文对变量的命名,如:keys、items等。
其它技巧
- 熟练使用局部变量和作用域:有时候同一个变量名会在多处用到,且指向的含义不同。这时候,熟练掌握局部变量和作用域就非常必要了,这让这些相近概念的变量有了使用同一个变量名的可能性,且不会相互影响。常见的例子有for循环中的变量i,就是利用了局部变量和作用域的特性。不过这个方法需要对该语言有相当深刻的理解,否则容易出现变量覆盖。
- 活用匿名函数:匿名函数也是一个减少变量命名的神器,如果能熟练掌握匿名函数的使用,通常可以减少10%左右的变量命名工作。但凡事皆有利弊,匿名函数的缺点是多人开发和维护时会造成理解上的难度。
- 定期检查僵尸代码:可以有效地帮助你清理变量冗余,为变量起名提供更多余地。
分享了这么多干货,看到这里的你,难道不点个赞吗~
四. Github项目分享:
最后,我在这里给大家总结了一些和变量命名有关的Github上的高分项目,大家可以依此学习变量命名技巧:
1. codelf
- url: https://github.com/unbug/codelf
- star: 13000
- fork: 968
- watch: 257
这是一个变量命名工具。计算机科学中最困难的两件事:缓存故障和命名。这个工具支持直接搜索中文,当您检索中文时,Codelf 会直接翻译单词并找到单词的同义词。然后搜索Github、Bitbucket、Google Code等开源项目的源代码匹配与这些词相关的变量名和函数名。
在线网址->https://unbug.github.io/codelf/
2. clean-code-php
- url: https://github.com/jupeter/clean-code-php
- star: 11000
- fork: 2800
- watch: 461
PHP代码的整洁之道,整理了一系列整洁代码实操。小到变量细到 SOLID 都有涉猎,中文译版->https://github.com/php-cpm/clean-code-php
3. one-Python-craftsman
- url: https://github.com/piglei/one-python-craftsman
- star: 5000
- fork: 823
- watch: 190
这个项目是针对Python的开发规范。优秀的 Python 代码由无数优秀的细节组成。这个项目详细的解释 Python 那些看似简单的细节,如何使用异常,如何命名变量,如何编写条件分支等,这些看似简单其实也可能是最难的地方。本项目作者是资深 Python 开发,内容接近实际工作和业务场景,我相信仔细学习这个项目,你的编码能力会大大提高,帮助你帮助你 Python 更高更远的发展道路。
与变量命名相关的部分,可以直接点这里->https://www.zlovezl.cn/book/ch01_variables.html
以下是我之前分享的有关写代码的使用技巧,有需要的同学可以直接点击下方链接获取:
【推荐阅读】程序员如何写出一手优雅的代码?18条规则你必须要知道
「LSTM文本生成器」动手写一个自动生成文章的AI,附完整代码
结束语我是@老K玩代码,专注于编程开发的经验总结和项目分享,如果你对编程感兴趣,可以关注我。
有其它开发相关的问题,欢迎随时私信我。
,