如何在代码中起有意义的名字

116 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

作为一名前端开发,在迭代周期长的项目中,我经常遇到文件、变量名称让人费解,又没有注释的情况。很多时候一些相近的变量名也给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(或安装插件),根据其范围对变量进行着色。把你的代码想象成一个露营地 - 让它比你发现它时更干净。