php规范
上一篇 /
下一篇 2008-02-27 14:45:34
变量命名
· 所有字母都使用小写
· 使用'_'作为每个词的分界。
理由
· 通过这一途径,代码中变量的作用域是清晰的。
· 所有的变量在代码中都看起来不同,容易辨认。
例如
function HandleError($errorNumber)
{
$error = OsErr($errorNumber);
$time_of_error = OsErr->GetTimeOfError();
$error_processor = OsErr->GetErrorProcessor();
}
2.11. 引用变量和函数返回引用
· 引用必须带‘r’前缀
理由
· 使得类型不同的变量容易辨认
· 它可以确定哪个方法返回可更改对象,哪个方法返回不可更改对象。
例如
class Test
{
var mrStatus;
function DoSomething(&$rStatus) {};
function &rStatus() {};
}
2.12. 全局变量
· 全局变量应该带前缀‘g’。
理由
·
防静电地板知道一个变量的作用域是非常重要的。
例如
global $gLog;
global &$grLog;
2.13. 定义命名 / 全局常量
· 全局常量用'_'分隔每个单词。
理由
这是命名全局常量的传统。你要注意不要与其它的定义相冲突。
例如
define("A_GLOBAL_CONSTANT", "Hello world!");
2.14. 静态变量
· 静态变量应该带前缀‘s’。
理由
· 知道一个变量的作用域是非常重要的。
例如
function test()
{
static $msStatus = 0;
}
2.15. 函数命名
· 函数名字采用C GNU的惯例,所有的字母使用小写字母,使用'_'分割单词。
理由
· 这样可以更易于区分相关联的类名。
例如
function some_bloody_function()
{
}
2.16. 错误返回检测规则
· 检查所有的防静电地板系统调用的错误信息,除非你要忽略错误。
· 为每条系统错误消息定义好系统错误文本以便include。
3. 书写规则
3.1. 大括号 {} 规则
在三种主要的大括号放置规则中,有两种是可以接受的,如下的第一种是最好的:
· 将大括号放置在关键词下方的同列处:
if ($condition) while ($condition)
{ {
... ...
} }
· 传统的UNIX的括号规则是,首括号与关键词同行,尾括号与关键字同列:
if ($condition) { while ($condition) {
... ...
} }
理由
· 引起剧烈争论的非原则的问题可通过折衷的办法解决,两种方法任意一种都是可以接受的,然而对于大多数人来说更喜欢第一种。原因就是心理研究学习范畴的东西了。
对于更喜欢第一种还有着更多的原因。如果您使用的字符编辑器支持括号匹配功能的话(例如vi),最重要的就是有一个好的样式。为什么?我们说当你有一大块的程序而且想知道这一大块程序是在哪儿结束的话。你先移到开始的括号,按下按钮编辑器就会找到与之对应的结束括号,例如:
if ($very_long_condition && $second_very_long_condition)
{
...
}
else if (...)
{
...
}
从一个程序块移动到另一个程序块只需要用光标和你的括号匹配键就可以了,不需找匹配的括号。
3.2. 缩进/制表符/空格 规则
· 使用制表符缩进。
· 使用三到四个空格为每层次缩进。
· 不再使用只要一有需要就缩排的方法。对于最大缩进层数,并没有一个固定的规矩,假如缩进层数大于四或者五层的时候,你可以考虑着将代码因数分解(factoring out code)。
理由
· 许多编程者支持制表符。
· 当人们使用差异太大的制表符标准的话,会使阅读代码变得很费力。
· 如此多的人愿意限定最大的缩进层数,它通常从未被看作是一件工作。我们相信程序员们会明智的选择嵌套的深度。
例如
function func()
{
if (something bad)
{
if (another thing bad)
{
while (more input)
{
}
}
}
}
3.3. 小括号、关键词和函数 规则
· 不要把小括号和关键词紧贴在一起,北京广告公司要用空格隔开它们。
· 不要把小括号和函数名紧贴在一起。
· 除非必要,不要在Return返回语句中使用小括号。
理由
· 关键字不是函数。如果小括号紧贴着函数名和关键字,二者很容易被看成是一体的。
例如
if (condition)
{
}
while (condition)
{
}
strcmp($s, $s1);
return 1;
3.4. 别在对象架构函数中做实际的工作
别在对象架构构造函数中做实际的工作, 构造函数应该包含变量的初始化和(或)不会发生失败的操作。
理由
· 构造不能返回错误 。
例如
class Device
{
function Device() { /* initialize and other stuff */ }
function Open() { return FAIL; }
};
导入论坛
收藏
分享给好友
管理
举报
TAG: