也许你和我有同样的困扰,维护他人写的代码,经常看的头疼,if不知道哪里结束,方法名称乱七八糟。原来我也始终认为代码的书写规范毫无任何用处,直到自己从开发到维护的时候,才体会到其中的好处。
书写时候的规范:
1.保持4个空格的缩进
2.在使用控制语句如if,switch等时,控制符号和左括号需空1格,右括号与开始的{之间空1格,在有多个控制条件时,条件与逻辑表达式之间空1格。
如
<?php
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
?>
<?php
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
?>
3.方法调用
方法和操作符之间空1格,各变量之间是变量1,空格变量1,空格...以此类推
<?php
$var = foo($bar, $baz, $quux);
?>
相关联的方法之间该等长
<?php
$short = foo($bar);
$long_variable = foo($baz);
?>
4.类定义
{}各该另起一行,命名时用大写字母区分每个相关层次,并用_分隔
<?php
class Foo_Bar
{
//... code goes here
}
?>
5.方法定义
默认值放到最后return,{}各该另起一行
6.PHP标识
使用<?php ?>作为PHP界限的标识,每个代码块结束后该再空一行出来
7.命名
对于static变量,$_包名_变量名
对于static方法,$_包名_方法名
对于public 变量,方法:$counter,connect()
对于private变量,方法 用_开头 $_status _sort()
常量 :全大写字母,_分隔
8.错误处理
对于已知的异常,描述另起一行
<?php
/*
* Connect to Specified Database
*
* @throws Example_Datasource_Exception when it can't connect
* to specified DSN.
*/
function connectDB($dsn)
{
$this->db =& DB::connect($dsn);
if (DB::isError($this->db)) {
throw new Example_Datasource_Exception(
"Unable to connect to $dsn:" . $this->db->getMessage()
);
}
}
?>
对于已知的异常,
$this->db =& DB::connect($dsn);
if (DB::isError($this->db)) {
throw new Example_Datasource_Exception("Unable to connect");
}
以上根据http://pear.php.net/manual/en/standards.php挑选出重要的,有不对的地方希望指正。