加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编码规范-php coding standard

发布时间:2020-03-16 00:43:05 所属栏目:PHP教程 来源:站长网
导读:标准化问题在某些方面上让每个人头痛,让人人都觉得大家处于同样的境地。这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争

类库命名 目前命名空间正在越来越广泛的被采用,以避免不同厂商和团体类库间的类名冲突。

当尚未采用命名空间的时候,为了避免类名冲突,一般的做法是在类名前加上独特的前缀,两个字符就
可以了,当然多用一些会更好。 例如John Johnson的数据结构类库可以用Jj做为前缀,如下: class JjLinkList { }

方法命名 采用与类命名一致的规则 理由 使用所有不同规则的大部分人发现这是最好的折衷办法。 例如 class NameOneTwo { function DoIt() {}; function HandleError() {}; }

类属性命名 属性命名应该以字符‘m'为前缀。 前缀‘m'后采用于类命名一致的规则。 ‘m'总是在名字的开头起修饰作用,就像以‘r'开头表示引用一样。 理由 前缀'm'防止类属性和方法名发生任何冲突。你的方法名和属性名经常会很类似,特别是存取元素。 例如 class NameOneTwo { function VarAbc() {}; function ErrorNumber() {};
var mVarAbc; var mErrorNumber; var mrName; }

方法中参数命名 第一个字符使用小写字母。 在首字符后的所有字都按照类命名规则首字符大写。 理由 你可以随时知道那个变量对应那个变量。 你可以使用与类名相似的名称而不至于产生重名冲突。 例如 class NameOneTwo { function StartYourEngines( &$rSomeEngine, &$rAnotherEngine); }

变量命名 所有字母都使用小写 使用'_'作为每个词的分界。 理由 通过这一途径,代码中变量的作用域是清晰的。 所有的变量在代码中都看起来不同,容易辨认。 例如function HandleError($errorNumber) { $error = OsErr(); $time_of_error = OsErr->getTimeOfError; $error_processor = OsErr->getErrorProcessor; }

引用变量和函数返回引用 引用必须带‘r'前缀 理由 使得类型不同的变量容易辨认 它可以确定哪个方法返回可更改对象,哪个方法返回不可更改对象。 例如 class Test { var mrStatus;
function DoSomething(&$rStatus) {}; function &rStatus() {}; }

全局变量 全局变量应该带前缀‘g'。 理由 知道一个变量的作用域是非常重要的。 例如 global $gLog; global &$grLog;

定义命名 / 全局常量 全局常量用'_'分隔每个单词。 理由这是命名全局常量的传统。你要注意不要与其它的定义相冲突。 例如
define("A_GLOBAL_CONSTANT", "Hello world!"); 静态变量 静态变量应该带前缀‘s'。 理由 知道一个变量的作用域是非常重要的。 例如function test()
{
static $msStatus = 0; }

函数命名 函数名字采用C GNU的惯例,所有的字母使用小写字母,使用'_'分割单词。 理由 这样可以更易于区分相关联的类名。 例如function some_bloody_function() { }

错误返回检测规则 检查所有的系统调用的错误信息,除非你要忽略错误。 为每条系统错误消息定义好系统错误文本以便include。

大括号 {} 规则在三种主要的大括号放置规则中,有两种是可以接受的,如下的第一种是最好的: 将大括号放置在关键词下方的同列处: if ($condition) while ($condition) { { ... ... } } 传统的UNIX的括号规则是,首括号与关键词同行,尾括号与关键字同列: if ($condition) { while ($condition) { ... ... } } 理由 引起剧烈争论的非原则的问题可通过折衷的办法解决,两种方法任意一种都是可以接受的,然而对于大
多数人来说更喜欢第一种。原因就是心理研究学习范畴的东西了。

对于更喜欢第一种还有着更多的原因。如果您使用的字符编辑器支持括号匹配功能的话(例如vi),最
重要的就是有一个好的样式。为什么?我们说当你有一大块的程序而且想知道这一大块程序是在哪儿结
束的话。你先移到开始的括号,按下按钮编辑器就会找到与之对应的结束括号,例如: if ($very_long_condition && $second_very_long_condition) { ... } else if (...) { ... } 从一个程序块移动到另一个程序块只需要用光标和你的括号匹配键就可以了,不需要来回的移动到行末去
找匹配的括号。

缩进/制表符/空格 规则 使用制表符缩进。 使用三到四个空格为每层次缩进。 不再使用只要一有需要就缩排的方法。对与最大缩进层数,并没有一个固定的规矩,假如缩进层数大于四或
者五层的时候,你可以考虑着将代码因数分解(factoring out code)。 理由 许多编程者支持制表符。 Tabs was invented for a rason 当人们使用差异太大的制表符标准的话,会使阅读代码变得很费力。 如此多的人愿意限定最大的缩进层数,它通常从未被看作是一件工作。我们相信程序员们会明智的选择嵌套
的深度。 例如 function func() { if (something bad) { if (another thing bad) { while (more input) { } } } }

小括号、关键词和函数 规则 不要把小括号和关键词紧贴在一起,要用空格隔开它们。 不要把小括号和函数名紧贴在一起。 除非必要,不要在Return返回语句中使用小括号。 理由 关键字不是函数。如果小括号紧贴着函数名和关键字,二者很容易被看成是一体的。 例如 if (condition) { } while (condition) { } strcmp($s, $s1); return 1;

RCS关键词、更改记录和历史记录规则直接使用RCS关键词的规则必须改变,其中包括使用CVS等类似的支持RCS风格关键词的源代码控制系统: 别在文件以内使用 RCS 关键词。 别在文件中保存历史修改记录。 别在文件中保存作者信息记录。 理由 The reasoning is your source control system already keeps all this information. There is no reason to clutter up source files with duplicate information that: makes the files larger makes doing diffs difficult as non source code lines change makes the entry into the file dozens of lines lower in the file which makes a search or jump necessary for each file is easily available from the source code control system and does not need embedding in the file When files must be sent to other organizations the comments may contain internal details that should not be exposed to outsiders.

别在对象架构期做实际的工作别在对象架构期做真实的工作,在架构期初始化变量和/或做任何不会有失误的事情。

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读