PHP代码规范[转]
PHP代码规范Author: andylin & 流浪牛
第一部分:空格和tab
1.将编辑器的Tab大小和Indent Size为8个字节.
2.使用 if,for,switch,while等语句,括号如下所示,(而关键字之后最好加一个空格)。如下所示:
if (bSet == NULL)
{
...
}
3.关键字之后最好加一个空格。运算符之后也最好加上一个空格。包括:&& 、||、 & 、| 、== 、 !=、 for 、if、while、+、-、*、/。例如:
int i = 0;
for (i = 0; i < N; i++)
{
....
}
第二部分:命名规则
4.变量命名规则:
1):普通类型变量根据类型的在前面加上小写前缀,例如
数组类型最好加上 arr*前缀。
$n* = 0; (以tab键对齐)
$ch* = 0;
$str* = “”;
2):类的成员(包括结构体)变量加上m_的前缀。
3):类的命名用C开头代表示一个class。比如:CPointView。
4):文件的命名视其用途而命名。类的命名为类名去掉C + .php。函数文件最好将功能相近的函数集放在一起,以功能命名。
5):原则上所有的命名都是以“26个字母”+“_”+“数字”组成。不允许出现中文。
5.函数命名及定义方法:
1):函数名称应根据实际用途来命名.
2):函数名称首字母和里面每个名词头必须是大写
3):每个函数必须有注释表明参数和实际用途,
4):与类的命名区别是类以C开头,其余的命名规则一致。不过,类是一个静态的描述而函数是一个动态的实现。所以类一般是名词性较强而函数是动词性比较的强。
下面列出几个函数命名例子:
///////////////////////////////////////////////////////////////////////
// 函数名 : PrintArray
// 功能描述 : 打印数组
// 参数 : $arr ;数组名
// 返回值 :
///////////////////////////////////////////////////////////////////////
4):函数的里面的变量的定义因该全部放在{}开头之内,而不是到处定义。变量定义必须整齐规范,尽可能的初始化。
5:)变量定义和代码开始之间必须空格两行,例如
见最后部分
6):函数体不宜过大,避免超过一百行代码。函数功能应该单一
6.类定义及注意事项
1):类的定义按照实际用途命名,然后需要在前面加上大写的C前缀。
2):每个类都要实现构造和析构两个成员函数,用于初始化和资源释放。
3):变量定义和成员函数定义要分开定义,
4):要做到层次分明结构清晰,下面是一个例子:
见最后部分
第三部分:文件组织
7.文件的说明:
每个文件开头包括(*.php)都加上文件内容说明,应该包括以下内容:
文件名称,创建日期,功能说明,作者,最后修改日期,修改人,如下:
//////////////////////////////////////////////////////////////////////////////////
//文件名称: file.php
//创建日期: 2006/04/19
//功能说明: 打印数组
//作 者: andylin
//版本号: 1.0.0.1
//////////////////////////////////////////////////////////////////////////////////////
8.每一个项目或者新产品都有一个Readme.txt [项目文件分布及功能说明,使用的外部连接库资源]和一个文档设计.doc(整体的说明项目的加构)。
9.文件结构的组织:./images ./index ./include ./flash 其中 ./images 存放图片文件,include中是系统要引用的重要文件,一般在./include/parameter中存放参数文件,在./include/config中存放配置文件,./include/function中存放全局的方法。在./include/class中存放类的定义与实现。./falsh存放flash文件。./style存放CSS文件。./scripts 存放比如JavaScrip脚本文件。./media存放多媒体文件。
第四部分:注释
10.单行注释用//多行注释用/* */组合。推荐使用//注释(因为/* */不允许嵌套使用,而//可以)。
11.文件修改的注释:如果文件修改了在文件的说明后面加上这些东西
///////////////////////////////////////////////////////////////////////
// 修改日期: :2006/10/1
// 修改人: :andylin
// 版本号: :1.0.02
// 修改目的 :
/*
说明目的(例如:添加几个新的方法)
*/
///////////////////////////////////////////////////////////////////////
最后在修改的地方标上其实修改和结束修改的标志。格式为:
//modify start + 版本号(by 作者)
…(源代码)
//modify end + 版本号(by 作者)
12.关于引入语句的注释:
//数据库类操作
requireonce(“./class/Db.php”);
要注意的几点:
a): 推荐使用requireonce
b): 所有的requireonce都放在最前面。文件信息之后。
第五部分:其余
13.命名空间:如果可能尽量的使用。将功能比较相似的模块放在一个名字空间中。
14.空行:空行将逻辑相关的代码段分隔开,以提高可读性。
下列情况应该总是使用两个空行:
a):一个源文件的两个片段(section)之间
b): 类声明与声明之间
c): 两个方法之间
d): 方法内的局部变量和方法的第一条语句之间
下列情况应该总是使用一个空行:
a):一个方法内的两个逻辑段之间,用以提高可读性
b):块注释或单行注释之前
第六部分:参考源代码范例
////////////////////////////////////////////////////
//文件名称:CPoint.php
//创建日期: 2007/02/01
//功能说明: 关于点的操作的类
//作 者: andylin
//版本号: 1.0.0.1
////////////////////////////////////////////////////
////////////////////////////////////////////////////
// 修改日期: :2007/03/01
// 修改人: :andylin
// 版本号: :1.0.02
// 修改目的
/*
添加了PrintPoint方法
*/
////////////////////////////////////////////////////
// 版本号 + modify start (by 作者)
// 版本号 + modify end(by 作者)
requireonce("./math.php");
namespace Math
{
class CPoint extends CObject
{
//构造函数 (最好把构造函数和析构函数放在最前面
public function _constructor($nx, $ny)
{
$x = $nx;
$y = $ny;
}
//析构函数
public function _destructor()
{
}
//1.0.0.2 modefy start(by andylin)
///////////////////////////////////////////////////////////////////////
// 函数名 : PrintPoint
// 功能描述 : 打印Point的x,y
// 参数 : 如果n == 1 print x 如果 n == 2 print y 否则print x, y
// 返回值 : 无
///////////////////////////////////////////////////////////////////////
//类似上面的声明,如果函数复杂应该要写,否者可以不写。比如下面的几个函数很简单就可以不写
public function PrintPoint($n)
{
if ($n == 1)
{
echo "x = ", x;
}
else if ($n == 2)
{
echo "y = ", y;
}
else
{
echo "x = ", x;
echo "y = ", y;
}
}
//1.0.0.2 modefy end(by andylin)
public function SetX($nx)
{
$this->x = $nx;
}
public function SetY($ny)
{
$this->y = $ny;
}
public function GetX()
{
return $this->x;
}
public function GetY()
{
return $this->y;
}
//Data Session
private $x = 0; //特殊的如i, j, k, x, y, n之类的可以不按命名规则。
private $y = 0 //否者,应当遵循。
};
};
页:
[1]