这几个编码小技巧将令你 PHP 代码更加简洁

栏目: PHP · 发布时间: 5年前

内容简介:这几个编码小技巧将令你 PHP 代码更加简洁

保持代码简洁和高可读性远远要比我们想象的要难,有时候甚至比持续架构设计都要难。这里收集了一些可能对你重构代码有用的 代码片段 供大家参考。

##数组转化

我们常常需要在一个函数里面接受一个支持字符串或者数组类型数据的参数。可以使用适当的类型转化方式将字符串类型转化成数组类型,来取代类型检测。

// 没有类型转化
$param = is_array($param) ? $param : [$param];
array_map(function ($item) {
    //
}, $param);

// 使用类型转化
array_map(function ($item) {
    //
}, (array) $param);

当然这看起来没什么区别,只是节省了一行代码而已。但是你可以设想一下,当你使用复杂的循环结构或者嵌套数组处理大量数据时。这样做将会有意义,它能使代码保持简洁。

##类型检查

类型检查也是一项让代码更简洁的技巧。一个小的类型检查可以节省几行代码,有些时候,还可以为你的参数提供更多的灵活性。

public function scopeOfTeam($query, $team) {
    $team = $team instanceof Team ? $team->id : $team;

    return $query->where('team_id', $team);
}

在这个例子里,我们可以在一行里面检查参数类型,所以我们不需要处处都写 if-else 语句。这里的参数有多种可能,可以是一个 Team 实例,也可以是一个整数。

##重构长 If 语句

有时候,在执行动作之前我们需要做一些条件检查。但是,随着我们的应用的持续增长,if 语句会变得越来越长。所以,我们需要考虑重构。一个小例子:

// 与其这样
if ($a === 'val_1' || $a === 'val_2' || $a === 'val_3') {
    // 执行动作
}

// 不如这样
if (in_array($a, ['val_1', 'val_2', 'val_3'])) {
    // 执行方法
}

注意,第一个例子运行方式与第二个有一些不同。第一个例子中,只要有一个条件为真,则后面的条件就会被忽略,在一些情况下,它会更快。谢谢 Zois Pag 的建议。

这两个例子的结果是一样的,但是第二个更整洁。我们可以不再使用 || 操作符,并且只引用了 $a 变量一次。

##去掉不必要的 if 语句

一个普遍的错误,我们会经常性的过度使用 if-else 语句。当然,有些时候它是不可省略的,但也有些情况,我们不需要用到它。

// 之前这样用
if ($a === 'b') {
    return true;
} else {
    return false;
}

// 现在可以这样
return $a === 'b';

但是逻辑颠倒了怎么办? 那么, 如果条件是 true 我们又想返回 false 该怎么办? 当然,在 if 语句中,我们仅需要相反的 truefalse ,但是在重构的版本中,我们会有一个相对轻松的工作。只需要在你验真假的时候加上 ! 运算符。它将返回颠倒后的结果。

##总结

每天我们都能发现一些充满了过度复杂逻辑的方案和代码,长期来看,这对开发者和产品本身都不好。上文中,我们只是尝试搜集了一些例子,在这些例子里,你只需做出一点小的努力,就可以让你的代码变得更好更简洁。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning XML with DOM and Ajax

Beginning XML with DOM and Ajax

Sas Jacobs / Apress / 2006-06-05 / USD 39.99

Don't waste time on 1,000-page tomes full of syntax; this book is all you need to get ahead in XML development. Renowned web developer Sas Jacobs presents an essential guide to XML. Beginning XML with......一起来看看 《Beginning XML with DOM and Ajax》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具