资讯专栏INFORMATION COLUMN

PHP 代码规范简洁之道

BearyChat / 938人阅读

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

1. 统一的编码规范

编码规范往简单说其实就是三个方面:

换行

空格

变量命名

放在 PHP 里面,还有一些附加的地方,比如关键字大小写,语法糖的使用(array()[] 等)的问题。之前整理过 PSR 的标准,也找过 php-cs-fixer 这样的工具。这些都是规范代码的重要手段。有统一的标准,配合上工具的检查,形成统一的编码约束不是什么难题。

没有规范,不同的人甚至同一个人在空格、换行和命名上都有可能是十分随意的。代码一长,回使整个文件看起来无比杂乱。

典型的例子比如:ifelse 的组合,可以写出无数种风格,比如:


再比如变量函数命名的问题上,各种混搭风格层出不穷:


这里并不探讨各种写法的优缺点,只是风格需要保持统一,不要混用。

2. 良好的编码习惯

如果你仔细看过 PSR 的标准,可能也会注意到某些地方其实是标准无法涉及到的。比如一个超长的表达式在什么时候换行,如何缩进等。

这里涉及到的就是编码习惯的约束问题。

比如方法的链式的调用的问题,比如某些数据库查询的封装:

db->select("id")->where("a", 1)
    ->groupBy("a")->orderBy("id", "DESC")->result();

# 这种情况下我建议是一个条件一行,保持缩进
$result = $this->db->select("id")
    ->where("a", 1)
    ->groupBy("a")
    ->orderBy("id", "DESC")
    ->result();

还有数组定义,某些数组成员字符串很长的情况下的写法:


3. 寻找最优的写法

写代码的过程中,最优的写法和编码习惯又不是同一件事情。这里要说的指的是如何遵循 PHP 的语言特性或者框架的特征,充分发挥语言和框架的能力来减少冗余。

比如在获取前端传入的参数的时候,很多时候能见到这样的代码:


更有甚者一些框架将前端传入的参数封装了一层,比如 $this->request->data["param"],如果再去用 isset 或者 array_key_exists 判断,整个获取参数的语句就会变得很长。

某些情况下使用三元运算符的时候需要注意 ?: 是可以合并使用的。

其实我们应该去尝试封装这种写法,防止同样的变量出现在一个语句中多次的情况。对于默认值的赋予,可以调研框架是否有封装提供,或者通过强制类型转换的方式进行。

还有一种情况是条件和循环嵌套的时候。比如从数组里抽取某一个字段,或者对某一个字段的值进行处理的时候,善用 array_map 以及引用(&)往往能节省不少工作量。但是使用的时候也要注意数组指针最后的位置。

在根据条件返回结果时,需要善用 return。还有就是合理的抽象与封装。

4. review 自己的代码

除了以上提到的在日常开发中需要注意的一些问题。还有就是事后的工作。

我相信很多人在看自己以前的代码的时候都有一种其实有更好的写法的感觉。随着时间的推移自己总会有更丰富的阅历,更多的想法。偶尔 review 自己的代码也是对过去的总结,也许会有新的感知。

5. 推广给你的队友

团队项目中,队友的配合对整个代码的规范起着决定性的作用。一个团队中有一个人不遵守规范,而又要到处修改代码的时候,很快就能破坏到所有的约束。

有统一的标准,有良好的执行力才能完成这件工作。

私博地址:http://0x1.im

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

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

相关文章

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

    摘要:将代码写的简洁并且易读易懂是每一位优秀的所应该具备的基本功。前几天在上看到这个项目,感觉很有收获,于是在这里记录一下。 将代码写的简洁并且易读易懂是每一位优秀的coder所应该具备的基本功。 前几天在github上看到clean-code-php这个项目,感觉很有收获,于是在这里记录一下。 使用有意义并且可读的变量名称 Bad: $ymdstr = $moment->format(y-...

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

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

    cyixlq 评论0 收藏0
  • PHP代码简洁之道——函数部分

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

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

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

    PrototypeZ 评论0 收藏0
  • 途牛原创|大话权限中心的PHP架构之道

    摘要:权限中心的依赖声明声明依赖关系检查代码规范声明开发依赖命名空间检查代码规范,执行单元测试。单元测试持续交付一切都如此的完美,没有测试,又如何可以证明这件事情的完美,又如何可以保障交付的质量。 序 权限管理是无线运营系统中的核心模块,通过访问控制策略的配置,来约定人与资源的访问关系。 本文着重讲解如何通过PHP来构建一个灵活、通用、安全的权限管理系统。 关于权限 首先我们来聊聊权限。 权...

    miracledan 评论0 收藏0

发表评论

0条评论

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