2018-12-13 15:37 by 布网科技
原文出处: Scholer
1. 统一的编码规范
编码规范往简单说其实就是三个方面:
换行
空格
变量命名
放在 PHP 里面,还有一些附加的地方,比如关键字大小写,语法糖的使用(array()
与 []
等)的问题。之前整理过 PSR 的标准,也找过 php-cs-fixer 这样的工具。这些都是规范代码的重要手段。有统一的标准,配合上工具的检查,形成统一的编码约束不是什么难题。
没有规范,不同的人甚至同一个人在空格、换行和命名上都有可能是十分随意的。代码一长,回使整个文件看起来无比杂乱。
典型的例子比如:if
和 else
的组合,可以写出无数种风格,比如:
PHP
1 2 3 4 5 6 7 8 9 10 11 12 |
# 单语句不写大括号 if (true) doSomething(); # else 大括号换行 十分占篇幅 if (true) { doSomething(); } else { doElseThings(); } # 此外还有关键字后不带空格,随意缩进等等 # ... |
再比如变量函数命名的问题上,各种混搭风格层出不穷:
PHP
1 2 3 4 5 6 7 8 9 |
# 全小写 $someparam1 = null; # 首字母下环线 $_some_param_1 = null; # 某些库的类,下划线和大小写混用 class Abstract_ClassA {
} |
这里并不探讨各种写法的优缺点,只是风格需要保持统一,不要混用。
如果你仔细看过 PSR 的标准,可能也会注意到某些地方其实是标准无法涉及到的。比如一个超长的表达式在什么时候换行,如何缩进等。
这里涉及到的就是编码习惯的约束问题。
比如方法的链式的调用的问题,比如某些数据库查询的封装:
PHP
1 2 3 4 5 6 7 8 9 10 |
# 不换行的情况下句子会很长 $result = $this->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(); |
还有数组定义,某些数组成员字符串很长的情况下的写法:
PHP
1 2 3 4 5 6 7 8 9 |
$array = ['abcdefg', 'acbdfeg', 'bcadgfe', 'cdadgef'];
# 如果成员太长,我建议拆解,这样 $array = [ 'abcdefg', 'acbdfeg', 'bcadgfe',
|