保持代码简洁和高可读性远远要比咱们想象的要难,有时候甚至比持续架构设计都要难。这里收集了一些可能对你重构代码有用的 代码片断 供你们参考。laravel
咱们经常须要在一个函数里面接受一个支持字符串或者数组类型数据的参数。能够使用适当的类型转化方式将字符串类型转化成数组类型,来取代类型检测。数组
// 没有类型转化 $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 类型或 int 型两种类型的数据了。spa
有时候,在执行动做以前咱们须要作一些条件检查。可是,随着咱们的应用的持续增加,if 语句会变得愈来愈长。因此,咱们须要考虑重构。一个小例子:架构设计
// 与其这样 if ($a === 'val_1' || $a === 'val_2' || $a === 'val_3') { // 执行动做 } // 不如这样 if (in_array($a, ['val_1', 'val_2', 'val_3'])) { // 执行方法 }
注意,第一个例子运行方式与第二个有一些不一样。第一个例子中,只要有一个条件为真,则后面的条件就会被忽略,在一些状况下,它会更快。谢谢 Zois Pag 的建议。设计
这两个例子的结果是同样的,可是第二个更整洁。咱们能够再也不使用 || 操做符,而且只引用了 $a 变量一次。code
一个广泛的错误,咱们会常常性的过分使用 if-else 语句。固然,有些时候它是不可省略的,但也有些状况,咱们不须要用到它。ip
// 以前这样用 if ($a === 'b') { return true; } else { return false; } // 如今能够这样 return $a === 'b';
可是逻辑颠倒了怎么办? 那么, 若是条件是 true 咱们又想返回 false 该怎么办? 固然,在 if 语句中,咱们仅须要相反的 true 和 false ,可是在重构的版本中,咱们会有一个相对轻松的工做。只须要在你验真假的时候加上 ! 运算符。它将返回颠倒后的结果。开发
天天咱们都能发现一些充满了过分复杂逻辑的方案和代码,长期来看,这对开发者和产品自己都很差。上文中,咱们只是尝试搜集了一些例子,在这些例子里,你只需作出一点小的努力,就可让你的代码变得更好更简洁。
讨论请前往社区: https://laravel-china.org/top...