by 清泉
2. 九月 2010 19:53
编码规范:
--------------------------------------------------------------------------------
索引
-------------------------------------
1. Php文件格式
2. 命名规则
3. 代码样式
4. 内嵌文档
-------------------------------------------------
1. Php文件格式
编码:应用平台核心文件使用utf-8无BOM头,避免不同编码造成的乱码(切忌使用记事本)。
标记:Php文件必须使用 <?php ?>。
命名:按照 范围、作用、其他描述 为顺序命名。如 Article.Validator.php,Article.ValidatorAble.php
或 Article/Validator.php,Article/ValidatorAble.php
具体命名参照【2、命名规则】,具体实施以减少冲突为原则处理。
缩进:使用空格缩进,4空格为一Tab,不允许使用Tab(常规IDE也会将Tab生成为4个空格,如NetBeans)。
行宽:建议宽度为80字符,最长不可超过120字符(在使用IDE格式化的情况下)。
NetBeans等IDE内有一条临界线,一般为80字符。
行分割:使用 \n 换行符,不可使用 \r\n 或 \r。
路径分割:使用 / 进行分割,路径结尾时不使用 / 。
2. 命名规则
前缀:不可使用个人标记式前缀,如MX_(MoXie:))。
类:普通类使用大写开头驼峰式命名,同样需要表明范围和作用等,如 ArticleRecorder。
接口使用Able后缀,如 RecorderAble。
虚类使用Base后缀,如 RecorderBase。
文件命名最好以当前文件内的主要类命名为参照。
方法、函数和参数:方法或函数名以动作为前缀、小写开头、表明作用,参数表明实属含义,
不可使用$param1,$param2此种 如 getUserByName($name)【定义时】。
参数引用写在函数内如 getUserByName(&$name)【定义时】,不可在使用时用使用引用符。
变量:小写字母开头、驼峰式,必要时可使用下划线'_' 下划线后首字母亦为小写,
万分必要时才可使用数字(尤其是数字结尾) 如:$userName,$userPsw,$userPsw_new。
特殊局部变量:
a.多重循环内重复赋值,且容载较大数据量需要注意释放内存的变量使用下划线前缀 如:$_rows
(如无特殊癖好,Php通常不需要你去管理内存释放)
b.需要特别注意此变量时,如变量名需要作为魔法变量使用时 如 $_mag
c.局部变量避免冲突时 如 $i,$_i (用于处理多层级数据,但切忌过多)。
常量: 系统底层,涉及拼合和规范其他分属代码的常量使用下划线前缀全大写加下划线 如 _ROOT_DIR(全局提示方便)。
类内部,系统非底层常量使用大写开头、大写加下划线 如 SMARTY_COMPILES_ROOT。
严禁不分单词的常量 如 SMARTYCOMPILESROOT。
3. 代码样式:
空格:
a.赋值语句等号前后加单空格 如 $name = 'MoXie';
b.拼接语句点好前后 如 $msg = 'Hello ' . $name;
字符串:尽量减少双引号的使用,如牵扯大量变量拼接请考虑重新设计该语句。
如必要请在使用双引号时使用花括号如 $msg = "I'm {$name}";
SQL语句:不同层级语句分行 如:
$sql = 'SELECT title,content,editTime ' // 如IDE自动将此换行去掉则使用行注释避免。
. 'FROM article ' // 注意最后留空格。
. 'WHERE 1=1 '
. 'AND id = :id ';
数组键:数组字母键应以小写开头(除后缀式取数据集) 如:
$arr = array(
'name' => 'MoXie' // 注意分行以便注释。
, 'age' => 18
, 'sex' => 2
);
连接符、逗号:字符串,数组组成所需连接符 '.' 和 分隔符 ',' 在多行情况下写在行前端(如上两例)。
4. 内嵌文档:
参考:http://www.phpdoc.org/
类:
/**
* 简要说明
*
* 注意事项,特殊说明
*
* 不兼容事项声明
*
* LICENSE: 授权简要
*
* @copyright 版权声明
* @license 授权说明书
* @version SVN: $Id:$
* @link 相关链接 如 说明文、讨论、DOC地址
* @since 起始处,如某发布版本开始有此类
* @deprecated 失效处
*/
方法、函数和参数:
/**
* 新增元
* ex.
* append('MoXie');
*
* @global $config
* @param String $str
* @return StringBuilder $this;
*/
变量: 变量文档声明,有助于IDE识别变量类型。
/* @var $person Person */
其他:
不符合规范的部分,代码冗余部分请说明理由以便他人使用和维护。
临时变量尽量使用行注释进行简要说明。
特别:
以上文档行注释请使用 // ,特殊声明需要使用 # 如:
state.setSn("edit_fault"); # [zh-cn]编辑失败!;[en] Edit faulted!
便于工具分析出可用数据。