PHP专业级编程规范整理_第1页
PHP专业级编程规范整理_第2页
PHP专业级编程规范整理_第3页
PHP专业级编程规范整理_第4页
PHP专业级编程规范整理_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 / 9 文档可自由编辑打印PHP 专业级编专业级编程程规规范整理范整理目录1 1目的目的.22 2使用角色使用角色 .23 3适用范围适用范围 .24 4文档格式定义文档格式定义.25 5命名命名.25.1命名的统一原则.25.2常量命名.25.3变量命名.25.4子程序命名.35.5接口命名.35.6类命名.35.7网站默认首页命名.45.8文件命名.45.9数据库方面命名.46注释注释.46.1总原则.46.2规范.46.2.1类的注释.46.2.2接口的注释.56.2.3子程序的注释.57代码书写风格代码书写风格.67.1总原则.67.2控制结构.67.3单条语句.77.4注释.87

2、.5子程序.87.6类.98PHP 性能规范性能规范.92 / 9 文档可自由编辑打印1 1目的目的提高开发效率;降低程序的复杂度;提高代码可读性。2 2使用角色使用角色3 3适用范围适用范围所有的 PHP 程序开发人员,PHP 代码质量检测人员4 4文档格式定义文档格式定义实例:实例:建议规范,建议规范,如下形式的语句为建议性的规范,不强制要求(包括字体颜色与“(建议)”双标识):用空行进行段落分隔(建议) 。5 5命名命名5.1 命名的统一原则反映现实世界的问题5.2 常量命名 具名常量是根据所代表的抽象实体而不是它所代表的数字来命名 全部大写,使用“_” 分隔单词 例子:DEFINE(C

3、MS_ROOT, DIRNAME(_FILE_);5.3 变量命名 全局变量以“g_”开头,非全局变量不要以“g_”开头例子:$g_staticDel$memberCount 变量名反映了现实世界的问题 充分描述此变量的用途 所有的“临时”变量都重新命以更有意义的名字例子:$discriminant = sqrt( pow( b, 2 ) - 4*a*c );$root0 = ( -b + $discriminant ) / ( 2*a );$root1 = ( -b - $discriminant ) / ( 2*a ); 以小写字母开头,从第二个单词开始,每个单词的第一个字母大写,其余小写

4、例子:$memberIndex 避免出现字母完全相同,仅大小写不同的命名 不允许在命名的结尾使用下划线 不要出现单字母的变量,如 i,j,k(只有在控制循环数时且循环代码条数在 3 条以内,才可以考虑使用) 循环下标的名字要有意义(如果循环的长度超出了一两行代码或者出现了嵌套循环,那么就应该是 i、j 或者 k 以外的其他名字)例子:for ( $teamIndex = 0; $teamIndex $teamCount; $teamIndex+ ) for ($eventIndex = 0; $eventIndex setName( );public function getName() re

5、turn $_name;public function isVip() public function setName( $name ) $this-$_name = $name;5.7 网站默认首页命名 index.html,index.shtml,index.php(根据实际需要,尽量按顺序选择)5.8 文件命名 文件名全部小写 存类的文件名要与类名保持一致,文件名格式为:classname.class.php 一个文件存储一个类5.9 数据库方面命名 表 :项目英文缩写_T_表实际用途 视图:项目英文缩写_V_视图实际用途 过程:项目英文缩写_P_过程实际用途 函数:项目英文缩写_F_函

6、数实际用途 序列:项目英文缩写_S_序列实际用途 主键:项目英文缩写_PK_表名_主键实际用途 索引:项目英文缩写_I_表名_索引实际用途6注释6.1 总原则 注释应该用中文清晰表达意思。应该能够使程序看起来更清晰,更容易理解。如果某一段程序不值得写文档,那么可能它是无效的代码 注释要尽量简明,避免装饰性的、标语式的注释 注释不但要说明做什么,还应当说明为什么要这样做。最好先写注释表明要做什么,再进行编码 另起一行的注释,要写在被注释程序的上一行 单行注释使用“/”,多行注释使用“/*/” (建议)6.2 规范6.2.1 类的注释 类型的用途、目的。包括其它别人可能感兴趣的介绍 已知的 Bug

7、。当然最好是修正所有的错误,但是有时可能暂时还没有办法修正错误,或暂时没有时间精力去修改 开发和维护该类的历史列表。记录每一次修改的作者、日期、修改的内容 对主要的算法必须加以解释说明,主要的流程必须给出引导性的说明 标准格式/*5 / 9 文档可自由编辑打印 * description 描述类的功能、用途、现存 BUG,设计方法。 * author 作者姓名 * version 最后修改日期(日期格式建议采用:年-月-日格式,例如:2008-04-05)*/ 如果对已经版本化的类进行了修改,需要按照如下格式为每一次修改附加修改历史记录:* modify* 修改人 + 修改日期(日期格式建议采

8、用:年-月-日格式,例如:2008-04-05)* 修改说明举例如下:/* * description 此类实现操作数据库的功能 * author 张三 * version 2008-04-05 * modify* 李四 + 2008-05-17* 增加事务处理方法 * modify* 王六 + 2008-07-08* 修改构造函数,增加只声名一次数据库联接的功能*/ Class Database 对类的每一个接口注释,注释内容不是说明实现细节,而是说明接口的意图及使用方法。类似子程序的注释风格6.2.2 接口的注释 接口的注释风格基本与类的注释风格相同 在别人使用接口之前,必须了解接口所包含

9、的概念。检验一个接口是否应该定义的简单方法是:你是否能够容易的描述接口的用途 接口如何应当和不应当被使用。开发者需要知道该接口如何被使用,也希望知道该接口不能被怎样使用6.2.3 子程序的注释 子程序执行了什么功能,为什么要这样处理 子程序对输入、输出数据的说明,子程序的局限性、算法来源,子程序的错误处理情况,存在的 BUG,其它可行方案 标准格式:/* description 描述此子程序的功能,存在的 BUG,算法来源,其它可行方案*example 使用实例(建议)6 / 9 文档可自由编辑打印* author 作者姓名* version 最后修改时间* param 类型 输入参数名 :作

10、用* 列举状态或标识性参数的可能取值及所代表的意义* return 类型 输出的结果所代表的意义*/举例:/* 此子程序实现发送邮件的功能*example * $isSendSuccess = sendmail( , ,* 论坛通知, 欢迎光临论坛, 1 )* if ($isSendSuccess) * echo 发送成功;* * else * echo 发送失败;* * author 刘七* version 2008/07/12* param string $mailFrom : 从哪个 email 发出* param string $mailTo : 发送到哪个 email* param

11、string $mailTitle : email 的主题* param string $mailContent : email 的内容* param int $mailType : email 的类型* 1 HTML 格式* 0 普通文本格式* return 类型 输出的结果所代表的意义*/ function sendmail( $mailFrom, $mailTo, $mailTitle, $mailContent, $mailType ) 7代码书写风格7.1 总原则 基本原理:好的布局凸现程序的逻辑结构 一行代码尽量简短,并且保证一行代码只做一件事。那种看似技巧性的冗长代码只会增加代码

12、维护的难度。保证不必左右拉动滚动条来阅读一整行代码,将会使你的代码更加可读,这一点包括注释 使用圆括号来界定操作的顺序。不要让别人判断复杂的操作优先级 合理使用空行,划分逻辑处理 代码缩进使用 TAB 键(四个空格)或者四个空格7 / 9 文档可自由编辑打印 建议遵循三十秒原则。如果另一个程序员无法在三十秒之内了解你的函数做了什么,如何做以及为什么要这样做, 那就说明你的代码是难于维护的,必须得到提高7.2 控制结构 单语句代码块的格式要与多语句代码块的格式统一 段落之间要使用空行(建议) 对于复杂的表达式,将条件分隔放在几行上 例子:/多语句代码块for ( $i = 0; $i MAX_L

13、INES; $i+ ) readLine($i);processsLine($i);/注意上边:在开始一个段落时,有一个空行/单语句代码块if ( $i MAX_LINES ) readLine($i);/注意上边:在开始一个段落时,有一个空行/复杂表达式if ( ( ( 0= $inChar ) & ( $inChar = 9 ) ) |( ( a = $inChar ) & ( $inChar = z ) ) |( ( A = $inChar ) & ($inChar =Z ) ) ) /注意上边:在开始一个段落时,有一个空行switch ($ballColor)

14、case BALLCOLOR_BLUE: rollout(); break;case BALLCOLOR_ORANGE: spinOnFinger(); break;default: fatalError( Unrecognized kind of ball.); break;/注意上边:在开始一个段落时,有一个空行while ( $pathName $startPath + $position ; ) /7.3 单条语句 用空格使语句显得清楚(建议)8 / 9 文档可自由编辑打印 使用空格会让逻辑表达式更易读(建议) 例子:while ( $pathName $startPath + $po

15、sition ; ) / 使用空格让数组引用更容易读(建议) 例子:$grossRate census $groupId , $gender, census $groupId , $ageGroup 使用空格让子程序参数更容易读(建议) 例子:getCensus( $inputFile, $empCount, $empData, $maxEmps, $inputError ) 格式化后续行 使后续行明显 将子程序调用的后续行按标准量缩进(4 个空格或用 TAB 键缩进) 将控制语句的后续行缩进以标准的空格数(4 个空格或用 TAB 键缩进) 例子:/example 1:$totalBill =

16、 $totalBill + $customerPurchases $customerId + SalesTax( $customerPurchases $customerId );/example 2:$totalBill = $totalBill + $customerPurchases $customerId + SalesTax( $customerPurchases $customerId );/example 3:getCensus( $inputFile, $empCount, $empData, $maxEmps, $inputError );/example 4:getCens

17、us( $inputFile, $empCount , $empData, $maxEmps, $inputError );/example 5:while ( $pathName $startPath + $position != ; & ( ( $startPath + $position ) = $pathNameMaxLength) /example 6:while ( $pathName $startPath + $position != ; & ( ( $startPath + $position ) = $pathNameMaxLength) / 每行仅写一条语句

18、 每行只声明一个变量 每行只声明一个常量 变量声明应尽量接近其首次使用的位置 合理组织声明顺序 可以按类型分组9 / 9 文档可自由编辑打印7.4 注释 单行注释使用“/”,多行注释使用“/*/” (建议) 注释的缩进要与相应代码一致 每行注释用至少一个空行分开7.5 子程序 用空行分隔子程序的各部分请在子程序的头、数据和常量名声明(如果有的话)以及子程序体之间插入空行 将子程序参数按标准缩进可选的子程序头布局有:任意布局、行尾布局或标准缩进。在大多数情况下,标准缩进更准确、连贯、可读、易维护7.6 类8PHP 性能规范 使用$rowid方式取数据,不要使用$rowid方式。 原因:$rowid的效率是$rowid的 7 倍。 纯字符串使用单引号包含。 原因:PHP 会在双引号包围的字符串中搜寻变量,单引号则不会。 删除未使用的变量 原因:仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量) 。PHP 大概会检查看是否存在全局变量。 执行 for 循环之前确定最大循环数,不要每循环一次都计算最大值。 循环内部不要声明

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论