/* if receive_flag is TRUE
if receive_flag is FALSE */
if ($receive_flag)
5.13. 注释以中文为主
注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。
6. 命名规定
6.1. 禁止拼音命名法
代码中禁止用拼音命名法。
6.2. 变量命名
变量名应当全部小写,并且词语之间以单个下划线分隔。
例如: $current_user 是正确的, 但是 $currentuser 和 $currentUser 就不正确。
名称应当是描述性的,并且简明。我们自然不希望使用冗长的句子作为变量名,但是多输入几个字符总好于疑惑于某个变量到底是干什么用的。
6.3. 函数命名
使用单词间用单下划线分隔的小写名称,允许动宾词组为执行某操作的函数命名。如果是OOP方法,可以只有动词(名词是对象本身)。允许系表函数命名。
示例:
复制代码 代码如下:
function print_record($rec_ind)
function input_record()
function get_current_color()
function is_boy()
动词表:add / edit / remove begin / end create / destroy
first / last get / release get / set
increment / decrement put / get
lock / unlock open / close
min / max old / new start / stop
next / previous source / target show / hide
send / receive
cut / paste up / down
系词表: is has
对于私有方法,以_开头。
6.4. 循环计数器
允许使用一个单字符变量名的唯一情形是当它作为一个循环计数器的时候。在这种情况下,外层循环的计数器应当始终是 $i。如果有一个循环处于这个循环的内部,它的计数器应当是 $j,进而是 $k,等等。如果循环的计数器是一个已经存在并且名字有意义的变量,本规范并不适用。
例如:
复制代码 代码如下:
for ($i = 0; $i < $outer_size; $i++){
for ($j = 0; $j < $inner_size; $j++){
foo($i, $j);
}
}
6.5. 函数参数
参数遵循和变量名字相同的约定。我们不希望一堆这样的函数:do_stuff($a, $b, $c)。在大部分情况下,我们希望仅仅看看函数的声明,就知道怎样使用它。
7. 可读性
7.1. 运算符的优先级
注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。
示例:下列语句中的表达式
复制代码 代码如下:
$word = ($high << 8) | $low (1)
if (($a | $b) && ($a & $c)) (2)
if (($a | $b) < ($c & $d)) (3)
如果书写为$high << 8 | $low
$a | $b && $a & $c
$a | $b < $c & $d
由于$high << 8 | $low = ($high << 8) | $low,
$a | $b && $a & $c = ($a | $b) && ($a & $c),
(1)(2)不会出错,但语句不易理解;$a | $b < $c & $d = $a | ($b < $c) & $d,
(3)造成了判断条件出错。
7.2. 避免数字,使用常量
避免使用不易理解的数字,用有意义的常量来替代。
示例:如下的程序可读性差。
复制代码 代码如下:
if ($trunk[$index]->trunk_state == 0){
$trunk[$index]->trunk_state = 1;
... // program code
}
应改为如下形式。
复制代码 代码如下:
define(TRUNK_IDLE, 0)
define(TRUNK_BUSY, 1)
if ($trunk[$index]->trunk_state == TRUNK_IDLE){
$trunk[$index]->trunk_state = TRUNK_BUSY;
... // program code
}
7.3. 源程序中关系较为紧密的代码应尽可能相邻
便于程序阅读和查找。
示例:以下代码布局不太合理。
复制代码 代码如下:
$rect->length = 10;
$char_poi = $str;
$rect->width = 5;
若按如下形式书写,可能更清晰一些。
复制代码 代码如下:
$rect->length = 10;
$rect->width = 5; // 矩形的长与宽关系较密切,放在一起。
$char_poi = $str;