使用驼峰结构命名,即以小写字母开头,从第二个单词开始,每个单词的第一个字母大写。
大半天时间整理的PHP编码规范…
一、命名规范:
1. 常量的命名
1) 字母,全部大写,使用“_” 分隔单词。
如:DEFINE(“PHP_DEMO_PRINT”,”hEllo world”);
2. 变量的命名
1) 使用驼峰结构命名,即以小写字母开头,从第二个单词开始,每个单词的第一个字母大写。
如:$getElement=”myodbc”;
2) 全局变量以“g_”开头,非全局变量不要以“g_”开头
如:$g_i;
3) 所有的“临时”变量使用完毕后必须unset。
4) 不允许出现字母完全相同,仅大小写不同的命名。
5) 不允许在命名的结尾使用下划线。
6) 不要出现单字母的变量,如i,j,k(只有在控制循环数时且循环代码条数在3条以内,才可以考虑使用)
7) 变量名中不能出现数字。
8) 变量名最好能表示出是数值型还是字符串型变量。
如:$myCount_i表示数值型变量,$myString_s表示字符串。
9) 如果有计算限定符,把限定词加到名字的最后。
如:$calTimeStart 、 $calTimeEnd.
3. 函数的命名
1) 函数名全部小写,单词之间可以使用下划线。
2) 存取对象的函数名使用 set_xxx() 和get_xxx() 形式。
3) 布尔类型的函数名可以使用 isxxx() 形式。
4) 函数名中不能出现数字。
4. 类命名
1) 类名用第一个字母大写的英文正常语序准确描述类的含义。如:Employee。
2) 类的方法命名规则与函数的命名规则一致。
3) 类的属性名采用全字母小写。
5. 文件的命名
1) 文件名字符全部采用小写
2) 文件名称要能反映出其内容及功能。
如:储存有类的文件,name.class.php;存有函数的文件可采用name.func.php或name.inc.php来命名;配置文件,name.cfg.php或者config.inc.php 。
二、注释规范:
1. 变量的注释
1) 变量的同行后空一格使用双斜线注释。
如:$myDemo = ’a demo’; //这是行内注释
2. 函数与函数体的注释
/*
@作者:xxxx、bbb
*/
//描述函数的功能和返回值和引用方法
function ff(aaa, bbb) {
……
// 普通夹杂在代码里的单行注释
……
return false;
}
3. 文件的注释
1) 文件功能、创建人信息、时间。
2) 已知的Bug。当然最好是修正所有错误,但可能暂时还没有办法修正错误,或暂时没有精力去修改
3) 开发和维护文件的历史列表。记录每一次修改的作者、日期、修改的内容
4) 对主要的算法必须加以解释说明,主要的流程必须给出引导性的说明
5) 标准格式
/**
* @description 描述类的功能、用途、现存BUG,设计方法。 * @author 作者姓名 * @version 最后修改日期(日期格式建议采用:年-月-日格式,例如:2008-04-05) */ 如果对已经版本化的类进行了修改,需要按照如下格式为每一次修改附加修改历史记录: * @modify * 修改人 + 修改日期(日期格式建议采用:年-月-日格式,例如:2008-04-05) * 修改说明
|
三、代码书写风格
1. 总原则
1) 一行代码尽量简短,并且保证一行代码只做一件事。
2) 使用圆括号来界定操作的顺序。不要让别人判断复杂的操作优先级。
3) 合理使用空行,划分逻辑处理。
4) 代码缩进使用TAB键(设定四个空格)。
5) 建议遵循三十秒原则。如果另一个程序员无法在三十秒之内了解你的函数做了什么,如何做以及为什么要这样做,那就说明你的代码是难于维护的,必须得到提高。
2. 控制结构
1) If 规范:
1. else 后面的if,另起一行
2. 把对比常量,放在等式左边
3. 分支要加上注释,注释前面加一个(TAB)缩进
if (6 == $errorNum) { //注释1
..
} else {
if (5 == $num) { //注释2
…
} else {
…
}
}
2) Switch规范:
switch (…) {
case 1: //分支1注释
…
// 这里没有break,直接转到下个case,须要加注释
case 2: { //分支2注释
$v = get_week_number(); // 创立变量,在{}之中
…
}
break;
default:
}
3) For规范:
For($i=1;$i<=3;$i++) {
……
}
4) While 规范:
While ($i<=5) {
….
}
5) Foreach 规范:
Foreach ($arr as $v => $k) {
….
}
四、代码书写风格
1. 使用$row[‘id’]方式取数据,不要使用$row[id]方式。
2. 纯字符串使用单引号包含。
3. 删除未使用的变量
4. 执行for循环之前确定最大循环数,不要每循环一次都计算最大值。
5. 循环内部不要声明变量,尤其是大变量:对象(语言通用)。
6. 执行字符串替换前用strpos()函数判断是否存在后再执行替换函数。
7. 用foreach代替while遍历数组。遍历数组时foreach的效率明显高于while循环
8. str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍
9. 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的
10. 用@屏蔽错误消息的做法非常低效。