资讯专栏INFORMATION COLUMN

PHP代码简洁之道——变量部分

mgckid / 2658人阅读

摘要:将代码写的简洁并且易读易懂是每一位优秀的所应该具备的基本功。前几天在上看到这个项目,感觉很有收获,于是在这里记录一下。

将代码写的简洁并且易读易懂是每一位优秀的coder所应该具备的基本功。

前几天在github上看到clean-code-php这个项目,感觉很有收获,于是在这里记录一下。

使用有意义并且可读的变量名称

Bad:

$ymdstr = $moment->format("y-m-d");

Good:

$currentDate = $moment->format("y-m-d");
对同一只类型的变量使用同样的词汇

Bad:

getUserInfo();
getUserData();
getUserRecord();
getUserProfile();

Good:

getUser();
使用易于查找的命名

Bad:

// 这里的4是什么鬼??
if ($user->access & 4) {
    // ...
}

Good:

class User
{
    const ACCESS_READ = 1;
    const ACCESS_CREATE = 2;
    const ACCESS_UPDATE = 4;
    const ACCESS_DELETE = 8;
}

if ($user->access & User::ACCESS_UPDATE) {
    // do edit ...
}
不要让读者猜

Bad:

$l = ["Austin", "New York", "San Francisco"];

for ($i = 0; $i < count($l); $i++) {
    $li = $l[$i];
    doStuff();
    doSomeOtherStuff();
    // ...
    // ...
    // ...
    // $li 变量代表什么???
    dispatch($li);
}

Good:

$locations = ["Austin", "New York", "San Francisco"];

foreach ($locations as $location) {
    doStuff();
    doSomeOtherStuff();
    // ...
    // ...
    // ...
    dispatch($location);
}
避免过深的嵌套

Bad:

function isShopOpen($day)
{
    if ($day) {
        if (is_string($day)) {
            $day = strtolower($day);
            if ($day === "friday") {
                return true;
            } elseif ($day === "saturday") {
                return true;
            } elseif ($day === "sunday") {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}

Good:

function isShopOpen($day)
{
    if (empty($day) && ! is_string($day)) {
        return false;
    }

    $openingDays = [
        "friday", "saturday", "sunday"
    ];

    return in_array(strtolower($day), $openingDays);
}

Bad:

function fibonacci($n)
{
    if ($n < 50) {
        if ($n !== 0) {
            if ($n !== 1) {
                return fibonacci($n - 1) + fibonacci($n - 2);
            } else {
                return 1;
            }
        } else {
            return 0;
        }
    } else {
        return "Not supported";
    }
}

Good:

function fibonacci($n)
{
    if ($n === 0) {
        return 0;
    }

    if ($n === 1) {
        return 1;
    }

    if ($n > 50) {
        return "Not supported";
    }

    return fibonacci($n - 1) + fibonacci($n - 2);
}
不要添加不必要的上下文

如果你的类/对象已经说明了一些信息,不要在你的变量名和属性里重复

Bad:

class Car
{
    public $carMake;
    public $carModel;
    public $carColor;

    //...
}

Good:

class Car
{
    public $make;
    public $model;
    public $color;

    //...
}
参数初始化时设置默认值
function create($name = null)
{
    $newName = $name ?: "ABC";
    // ...
}

设置默认值一个比较明显的好处是,当对一个较早之前已经定义好的函数添加参数时,将新增的参数设置默认值可以省得去修改以前使用该函数的地方。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25935.html

相关文章

  • PHP代码简洁之道——函数部分

    摘要:超过三个参数会导致参数之间的组合过多,你必须对每个单独的参数测试大量不同的情况。拆分这些函数,可以让代码可重用性更高且更易测试。 函数参数不要超过两个 限制函数的参数数量是非常重要的,因为它使你的函数更容易测试。超过三个参数会导致参数之间的组合过多,你必须对每个单独的参数测试大量不同的情况。 没有参数是最理想的情况,一个或两个参数是可以接受的,三个以上则是应该避免的。这很重要的。如果你...

    crossoverJie 评论0 收藏0
  • PHP 代码规范简洁之道

    摘要:统一的编码规范编码规范往简单说其实就是三个方面换行空格变量命名放在里面,还有一些附加的地方,比如关键字大小写,语法糖的使用与等的问题。这些都是规范代码的重要手段。推广给你的队友团队项目中,队友的配合对整个代码的规范起着决定性的作用。 1. 统一的编码规范 编码规范往简单说其实就是三个方面: 换行 空格 变量命名 放在 PHP 里面,还有一些附加的地方,比如关键字大小写,语法糖的使用...

    BearyChat 评论0 收藏0
  • PHP代码简洁之道——类和对象部分

    摘要:使用和在中,通过为属性或方法设置和关键字可以实现对属性或方法的可见性控制。你的继承表达了一个对等比如人类是动物的关系,不是包含的关系比如用户具有用户详情你能从基类中复用代码你想通过修改全局类来对所有派生类进行修改。 使用getter和setter 在 PHP 中,通过为属性或方法设置 public, protected 和 private 关键字可以实现对属性或方法的可见性控制。不过,...

    cyixlq 评论0 收藏0
  • JavaScript 的简洁之道

    摘要:考虑到函数表示某种行为,函数名称应该是动词或短语,用以说明其背后的意图以及参数的意图。不好的方式好的方式使用条件简写。这可能微不足道,但值得一提。 为了保证可读性,本文采用的音译而非直意。 简介 如果你关注代码本身和代码的编写方式,而不是只关心它是否能工作,那么你写代码是有一定的水准。专业开发人员将为未来的自己和其他人编写代码,而不仅仅只编写当前能工作就行的代码。 在此基础上,简洁代码...

    wudengzan 评论0 收藏0
  • PHP代码简洁之道——SOLID原则

    摘要:是推荐的便于记忆的首字母简写,它代表了命名的最重要的五个面对对象编码设计原则单一职责原则开闭原则里氏替换原则接口隔离原则依赖反转原则单一职责原则修改一个类应该只为一个理由。别写重复代码这条原则大家应该都是比较熟悉了。 SOLID 是Michael Feathers推荐的便于记忆的首字母简写,它代表了Robert Martin命名的最重要的五个面对对象编码设计原则 S: 单一职责原则 ...

    PrototypeZ 评论0 收藏0

发表评论

0条评论

mgckid

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<