本文已参与「新人创作礼」活动,一起开启掘金创作之路。
作为一名前端开发,在迭代周期长的项目中,我经常遇到文件、变量名称让人费解,又没有注释的情况。很多时候一些相近的变量名也给Debug带来困难。那么在业务压力很大,开发人员编写注释的习惯又不好的情况下,如何做到让代码能自解释就非常重要了。这不仅能加快协调开发的效率,也能很大程度上减少后期代码的维护成本。特别是针对英语不好的开发者来说,一个简单的指南就非常重要了。
作为开发人员,您花费大量编码时间来制作变量并考虑合适的名称。名字无处不在,您可以命名文件,类,方法和变量。由于我们花了很多时间来命名,所以做得好是非常重要的。在本文中,我将向您展示一些可以创建好名称的简单规则。在代码中命名是一门艺术!
使用显示意图的名称
找到合适的揭示其意图的名称说起来容易做起来难。您多久遇到一个没有任何关于其意图信息的变量名称?
一个好的经验法则是:如果名称需要注释,那么它就没有展示意图。
以下代码是一个不显示意图的变量:变量$
<?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函数很困难呢?代码中没有复杂的表达式,代码缩进、格式化都正确,而且只使用了三个变量,也没有花哨的东西。
现在来看看getOddNumbers函数,是否看到该函数与getList函数完全相同?
请注意,代码的复杂性没有改变。它仍然具有完全相同数量的运算符和变量,具有完全相同的嵌套层数。唯一改变的是代码表达的意思变得更加明确。通过一些简单的名称更改,就可以更容易分辨出这段代码的作用。
避免误导信息
你应该避免留下让代码含义变模糊的错误线索。
避免使用跟意图有歧义的误导词语。例如,不要将一组产品称为productList,除非它是List类型的实例对象。因为可能导致错误的结论。更好的名称是products。
最差变量名称可能就是大写O和小写L,这是因为它们看起来很像0和1。
注意使用小范围变化的名称。需要多长时间才能发现一个文件中SomeMethodForEfficientHandlingOfFiles和另一个文件中SomeMethodForEfficientStorageOfFiles之间的细微差别?乍一看,这些名字看起来一样。
做出有意义的区分
以数字命名不是按意图命名的好方法,因为这些名称是非信息性的,它们没有提供代码作者的意图的线索。
我们来看下面的例子:
<?php
public function duplicateArray($arr1, &$arr2) {
foreach ($arr1 as $key => $value) {
$arr2[$key] = $value;
}
}
当$ arr1
和$ arr2
重命名为$ source
和$ destination
时,这段代码会清晰。
使用可以发音的名字
如果不能读出一个名字,你就不能不在听起来像白痴的情况下进行相关的讨论。这实际上很重要,因为编程的一部分是社交活动。每个人都很有可能从脑袋里直接拿出一个他们无法发音的变量名称。
让我们假设我们有一个名为$ xsq的变量名,这是贵公司非常重要的缩写。想象一下与同事的对话:
“嘿,那个变量怎么样?”
“你的意思是访问队列(access queue)?”
一些开发人员会尝试将变量发音读成一个单词,而其他人会拼出这个词。
使用可搜索的名称
由一个字母组成的名称存在无法被轻易找到的问题。这同样适用于数字常量。数值常量可以用常量变量替换。在搜索代码时,数字8可能会给您带来很多麻烦。但是,用常量MAX_BLOCKS_DISPLAYED替换它会使查找变得容易多了。
单字母名称的唯一用例是短方法中的局部变量。
成员前缀(Member Prefix)
不要使用成员前缀。例如,一些开发人员习惯为所有私有变量和方法添加下划线。不要这样做,类和方法应该小到不需要任何这些前缀。
作为替代方案,您可以使用IDE(或安装插件),根据其范围对变量进行着色。把你的代码想象成一个露营地 - 让它比你发现它时更干净。