您好,欢迎访问三七文档
PHP程序编码规范-1-PHP程序编码规范-=Beta1.1=-Anyviolationtothisguideisallowedifitenhancesreadability.所有的代码都要变成可供他人容易阅读的良好的代码书写习惯+良好的注释习惯+PhpDocumentor=程序说明书整理日期:2010-5-2碎心竹参考修改自:.NET编程规范华为编程规范JavaScript程序编码规范(cloudwater译)PHP开发规范(未知出处)PHPCodingStandard(FredrikKristiansen/DBMedialab)等......PHP程序编码规范-2-前言第1章排版规则1.1缩进1.2空格规则1.2.1逻辑运算符前后必须加空格1.2.2多个参数分隔时必须加空格1.2.3语法关键字后必须加空格1.2.4字符串和变量连接规则1.3换行1.3.1较长的语句(80字符)第2章命名规范2.1变量命名2.1.1局部变量2.1.2全局变量命名2.1.3静态变量命名2.1.4引用变量和函数返回引用2.1.5临时变量命名2.1.6方法中参数命名2.2命名定义/全局常量2.3类命名2.3.1接口命名原则2.3.2Exception命名原则2.3.3类库命名2.3.4方法命名2.3.5方法/函数命名修饰2.3.6类属性命名2.3.7私有属性与私有方法命名2.3.8对象命名2.4缩写词不要全部使用大写字母2.5函数命名第3章版式规则3.1语义分隔3.2圆括号规则PHP程序编码规范-3-3.3方法/函数3.4关键字3.4.1if语句3.4.2for语句3.4.4do语句3.4.5switch语句3.4.6try语句3.4.7return语句第4章编程规范4.1数组定义规则4.2不要采用缺省方法测试非零值4.3通常避免嵌入式的赋值4.4布尔逻辑类型4.5别在对象架构函数中做实际的工作4.6switch格式4.7Continue和Break4.8?:4.9其他杂项4.9.1类定义文件中,定义体之外不得出现诸如echo、print等输出语句;4.9.2在HTML网页中尽量不要穿插PHP代码4.9.3没有含义的数字4.9.4PHP文件扩展名4.9.5总是将恒量放在等号/不等号的左边4.10SQL规则4.10.1输出网页的页面不出现SQL语句4.10.2进行SQL执行的数据必须进行有效性检测第5章注释规则5.1一般规则5.2方法/函数注释5.3类注释5.4记录所有的空语句5.5用if(0)来注释外部代码块5.6版权信息PHP程序编码规范-4-前言:为了更好的编写代码,特整理了这一份文档,在整理当中也学习巩固了不少知识,也遇到很多感到迷惑的地方,还需要Exp的增长才能明白...因为PHP的函数大小写不敏感特性,完全可以在调用库函数的时候使用自己的大小写规则调用而不会遇到任何问题。另外没有一成不变的规则,也有很多规则没有定义到的地方。很多时候可能需要自己来判断如何书写才能让读者更直观的认识程序,本着能清晰语法,而不是混交语法的书写原则就好。对于编辑环境的不同也将致程序编写规范方面的不同,比如喜欢使用可变长字符编辑器的程序员就没办法使用变量对其赋值的方法写初始化语句,而使用mono字体的人却要长时间忍受呆板字体的侵蚀。基本上所有编码规范的排版方案都是基于定长字符编辑环境的。(ps:本人却喜欢可变长度字符...)排版软件对齐效果很不好...,所以看到下面实例代码并不整齐也就不奇怪了。第1章排版规则1.1缩进对齐只使用空格键,不使用TAB键。缩进的单位为4个空格。说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局变化。虽然使用空格会增加文件的大小,但在局域网中几乎可以忽略,且在编译过程中也可被消除掉。1.2空格规则空格应在以下情况时使用:跟在((左括号)后面的关键字应被一个空格隔开。while(true){函数名与左括号之间不应该有空格。这能帮助区分关键字和函数调用。所有的二元操作符,除了左括号和左方括号应用空格将其与操作数隔开。一元操作符与其操作数之间不应有空格,除非操作符是个单词,比如typeof。每个在控制部分,比如for语句中的;(分号)后须跟一个空格。每个,(逗号)后应跟一个空格。1.2.1逻辑运算符前后必须加空格正确$a==$b;错误$a==$b;$a==$b;正确$a++;$a––;错误$a++;$a––;备注加一减一运算符不能加空格。PHP程序编码规范-5-1.2.2多个参数分隔时必须加空格正确$g_pro,$g_user,g_show;get_db_info($host,$user,$passwd);错误$g_pro,$g_user,$g_show;get_db_info($host,$user,$passwd);1.2.3语法关键字后必须加空格if,for,while,switch等关键字...例如:正确for($i=0;$i10;$i++)错误for($i=0;$i10;$i++)1.2.4字符串和变量连接规则字符串与变量连接使用’.'号时,必须在’.'前后加空格,使用”号自动转义变量时必须在变量前后加”{}”。正确$my_name='file_'.$var1;$my_name=file_{$var1};错误$my_name='file_'.$var1;$my_name=file_$var1;1.3换行每行一个语句,除非这些语句有很密切的联系,否则每行只写一个语句。用空行来将逻辑相关的代码块分割开可以提高程序的可读性。相对独立的程序块之间、变量说明之后必须加空行。示例:如下例子不符合规范。if(!valid_ni($ni)){...//programcode}$repssn_ind=$ni;应如下书写if(!valid_ni($ni)){...//programcode}$repssn_ind=$ni;PHP程序编码规范-6-1.3.1较长的语句(80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。示例:if((tasknomax_act_task_number)&&(n7stat_stat_item_valid(stat_item))){...//programcode}for(i=0,j=0;(iBufferKeyword[word_index].word_length)&&(jNewKeyword.word_length);i++,j++){...//programcode}for(i=0,j=0;(ifirst_word_length)&&(jsecond_word_length);i++,j++){...//programcode}第2章命名规范2.1变量命名规范使用三种书写方式:Pascal命名规则将标识符的每个单词的首字母都大写。例如:BackColorCamel命名规则标识符的首字母小写,而后面连接的单词的首字母都大写。例如:backColorLinuxC命名规则变量所有字母都使用小写,使用'_'作为每个词的分界。变量名必须有一定的意义,并且意义准确。例如:有一个变量用于保存图书的数目,可以命名为number_of_book或者num_of_book。不建议使用i,j,n等,因为它没有意义。也不建议使用number或book,因为意义不准确。2.1.1局部变量所有变量都要预先声明,并注明其意义,在函数的首部定义所有的变量。不要使用一个声明一个;最好把每个变量的声明语句单独放到一行,并加上注释说明。所有变量按照字母排序。PHP程序编码规范-7-$current_entry;//当前选择项$level;//缩进程度$size;//表格大小尽量减少全局变量的使用。不要让局部变量覆盖全局变量。变量所有字母都使用小写,使用'_'作为每个词的分界。理由:通过这一途径,代码中变量的作用域是清晰的。所有的变量在代码中都看起来不同,容易辨认。例如:functionHandleError($errorNumber){$error=osErr($errorNumber);$time_of_error=osErr-GetTimeOfError();$error_processor=osErr-GetErrorProcessor();}变量名字应该使用名词或者形容词+名词的方式。如$value,$new_value。ps:此条有待研究,变量与属性本身分区并不明显,为什么要人为这样大的区别呢。貌似已经出现3中变量的写法,是不是会阻碍程序编写呢?2.1.2全局变量命名全局变量使用g前缀。例:global$gLog;global&$rgLog;2.1.3静态变量命名静态变量使用s前缀,如:$s_value。2.1.4引用变量和函数返回引用引用必须带‘r’前缀理由:使得类型不同的变量容易辨认,它可以确定哪个方法返回可更改对象,哪个方法返回不可更改对象。如:$r_var。function&rStatus(){};2.1.5临时变量命名不要将在循环中频繁使用的临时变量如$i,$j等用于其它用途。2.1.6方法中参数命名参数的名字使用Camel命名方法(首字母小写),在首字符后的所有字都按照类命名规则首字符大写。PHP程序编码规范-8-参数的名字应该是描述性的,参数的名字应该具有自描述性,也就是说参数的名称可以描述参数在大多数情况下的含义,参数的类型也是可以从参数的名字推断出来的。参数的名字是基于参数的含义而不是参数的类型。理由:可以区分方法中的一般变量。你可以使用与类名相似的名称而不至于产生重名冲突。例如:classNameOneTwo{functionStartYourEngines(&$rSomeEngine,&$rAnotherEngine);}2.2命名定义/全局常量全局常量用'_'分隔每个单词。理由:这是命名全局常量的传统。你要注意不要与其它的定义相冲突。例如:define(A_GLOBAL_CONSTANT,Helloworld!);classTest{varmrStatus;functionDoSomething(&$rStatus){};function&rStatus(){};}2.3类命名用Pascal命名规则,尽量谨慎的使用缩写,不要用下划线作类名单词连接符。在类中,方法放到属性定义前边、公用方法放到专用方法前边。在为类命名前首先要知道它是什么。如果通过类名的提供的线索,你还是想不起这个类是什么的话,那么你的设计就还做的不够好。超过三个词组成的混合名是容易造成系统各个实体间的混淆,再看看你的设计,尝试使用(CRCSessioncard)看看该命名所对应的实体是否有着那么多的功用。对于派生类的命名应该避免带其父类名的诱惑,一个类的名字只与它自身有关,和它的父类叫什么无关。有时后缀名是有用的,例如:如果你的系统使用了代理(agent),那么就把某个部件命名为“下载代理”(DownloadAgent)用以真正的传送信息。类使用英文的大小写来分隔单词,包括首个单词,所有单词的首字母大写,如PageManager;一般情况下,一个类对应到一个文件,当一些类关系紧密时,可以存放在一个文件中。存放类的文件采用classname.class.php方式命名。所有系统文件名均为小写。PHP程序编码规范-9-2.3.1接口命名原则接口名字在类的原则上加前缀I。例如:IComponent(描述性名词)、ICustomAttributeProvider(名词短语)、IPersistable(形容词)等。有的类,必须用字母I作为类名前缀,而又不是一个接口。这是可以接受的,因为有的类名就是I开头的,例如:IdentityStore。这种情况和接口的区别在于其第二个字母是小写的。有的时候,定义完一个接口之后,也会定义一个类作为接口的标准实现。该类和该接口应该有类似的名字,唯一的区别就是接口名称
本文标题:PHP程序编码规范
链接地址:https://www.777doc.com/doc-4382332 .html