做为一名开发人员,在编码过程当中,你总会花不少时间来思考如何正确命名。由于名称无处不在,你须要考虑文件名、类名、方法名和变量名。php
虽然咱们须要花费不少时间,可是为了更好的命名仍是值得的。本文我将向你介绍几个可以帮助你编写优质命名的简单规则。命名这件事自己也是一门艺术。web
使用显示意图的名称
名称直接显示意图这件事提及来容易作起来难。你是否常常遇到一些难以判断其用途的名称?编程
一个好的经验法则是:若是一个名称须要注释,那么它自己就是不能说明意图的。微信
这个代码片断就演示了一个不能显示意图的变量命名。app
<?php
private $s; // Time in seconds
变量$s
什么也说明不了。它没有任什么时候间流逝的感受,咱们最好是能选择一个名称指定测量内容和测量单位。下面这些变量名看起来就好不少。编辑器
<?php
private $days_since_creation;
private $elapsed_time_in_seconds;
private $seconds_since_last_modified;
选择一个能够显示意图的名称能使一段代码更容易理解,从而下降维护成本。虽然选择的过程会花费一些时间,但这是为了节省更多的时间。咱们来一块儿看看下面这个例子。函数
<?php
function getList() {
$list1 = [];
foreach ($this->the_list as $x) {
if ($x % 2 != 0) {
$list1[] = $x;
}
}
return $list1;
}
function getOddNumbers() {
$odd_numbers = [];
foreach ($this->numbers as $number) {
if (isOdd($number)) {
$odd_numbers[] = $number;
}
}
return $odd_numbers;
}
你能立刻说出 getList
函数的做用吗?恐怕须要看完具体实现以后才能说出来吧。而这段代码自己没有什么复杂的逻辑,一共3个变量和不到10行的逻辑。ui
接下来咱们再来看看 getOddNumbers
这个函数,有没有发现,它的逻辑和 getList
实际上是同样的。而且没有更加代码的复杂性,变量数量相同,代码嵌套层级也相同,惟一不一样的是代码写的更加清晰了。但你却能够经过函数名一眼看出这个函数的做用。this
经过上面的例子咱们发现,只须要在命名上作一些小小的改变,就可以轻易的告诉别人你的代码的做用。编码
避免虚假信息
你应该避免留下一些可以掩盖代码真实意图的错误线索。
你应该避免使用一些有歧义的单词,例如不要把产品集合命名为 productList
,除非它自己就是一个 List
类型的对象,这有可能会误导别人,更好的名字应该是 products
。
命名中千万不要使用大写的 o
或者小写的 L
由于它们看起来就像0和1同样。
对于相近的名称也要当心使用,例如,你让你来分辨 SomeMethodForEfficientHandlingOfFiles
和 SomeMethodForEfficientStorageOfFiles
这两个单词时,你须要用多长时间,我相信大多数人第一眼看上去,就认为它俩彻底同样。
作出有意义的区分
数字序列的命名不是命名的好方法,这样的名字是没有任何意义的,也不可以展现出做者的意图。
咱们来看一下这个例子
<?php
public function duplicateArray($arr1, &$arr2) {
foreach ($arr1 as $key => $value) {
$arr2[$key] = $value;
}
}
这段代码中,若是咱们用 $source
和 #destination
来代替 $arr1
和 $arr2
会更好。
使用你知道发音的名称
若是大家不知道名字的发音,那么你和人交流起来就会像白痴同样,这就很麻烦,毕竟社交是编程中比较重要的一个环节。你的命名最好是每一个人都可以经过发音就立刻就能想到的单词。
假如咱们有一个变量命名为 $xsq
而且这在公司内是一个很重要的变量,想象一下你平常和同事的对话:
"Hey, what about that variable eke ess kjew?"
"You mean the access queue?"
有些开发者会尝试把变量凑成一个单词的发音,而有些开发者则会选择读单词的字母拼写。
使用便于搜索的名称
由一个字母组成的名称的很差之处在于难以定位。数字常量也有一样的问题,因此咱们在开发过程当中须要把魔数替换为常量。在代码里搜索数字8是一件很困难的事情,可是若是你搜索常量 MAX_BLOCKS_DISPLAYED
就会简单不少。单字母命名的惟一用例是在简短方法中的局部变量。
成员属性前缀
不要使用成员属性前缀。
有些开发者习惯把类中全部的私有变量用下划线为前缀命名。不要这么作,你应该保证的是,你的类和方法要足够小,以致于你不须要使用这些前缀。
或者,你可使用IDE(或安装插件)来根据变量的使用范围给变量着色。
把你的代码想象成一个露营地,让它尽量的保持整洁。
总结
以上,就是建立有意义命名的一些原则和方法。有任何问题欢迎给我留言,本文灵感来源于《代码整洁之道》,推荐你们都读一下这本书。
原文结束了,我我的仍是比较承认做者的观点的,代码中的各类命名仍是要花时间去琢磨琢磨的,这里也分享一下我在工做中经过 code review 的一些小感悟吧。在代码中,文件名、类名、方法名,这些不要嫌长,要尽量的达意,而且可读。而对于一些局部变量,则能够适当放宽限制,若是太长的话会致使代码中有不少没必要要的换行,可是也最好不要出现 a1
、 a2
这样的命名。由于这种是彻底不能理解它表明什么的。
这篇文章在 medium 上收获的 3k+ 的 claps。因此就想着翻译过来推荐给你们,同时也推荐你们读一读《代码整洁之道》。
本文分享自微信公众号 - 代码洁癖患者(Jackeyzhe2018)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。