3.9 PHP编码规范
很多初学者对编码规范不以为然,认为对程序开发没有什么帮助,甚至因为要遵循规范而影响了学习和开发的进度。或者因为经过一段时间的使用,已经形成了自己的一套风格,所以不愿意去改变。这种想法是很危险的。
举例说明,如今的Web开发不再是一个人就可以全部完成的,尤其是一些大型的项目,要十几人,甚至几十人来共同完成。在开发过程中,难免会有新的开发人员参与进来,那么这个新的开发人员在阅读前任留下的代码时,就会有问题了—这个变量起到什么作用?那个函数实现什么功能?TmpClass类在哪里被使用到了……诸如此类。这时,编码规范的重要性就体现出来了。
3.9.1 什么是编码规范
以PHP开发为例,编码规范就是融合了开发人员长时间积累下来的经验,形成了一种良好统一的编程风格,这种良好统一的编程风格会在团队开发或二次开发时起到事半功倍的效果。编码规范是一种总结性的说明和介绍,并不是强制性的规则。从项目长远的发展以及团队效率来考虑,遵守编码规范是十分必要的。
遵守编码规范的好处如下。
编码规范是对团队开发成员的基本要求。
开发人员可以了解任何代码,理清程序的状况。
提高程序的可读性,有利于相关设计人员交流,提高软件质量。
防止刚接触PHP的人出于节省时间的需要,自创一套风格并养成终生的习惯。
有助于程序的维护,降低软件成本。
有利于团队管理,实现团队后备资源的可重用。
3.9.2 PHP书写规则
1.缩进
使用制表符(Tab键)缩进,缩进单位为4个空格左右。如果开发工具的种类多样,则需要在开发工具中统一设置。
2.大括号{}
有两种大括号放置规则可以使用。
将大括号放到关键字的下方、同列。
if ($expr) { … }
首括号与关键词同行,尾括号与关键字同列。
if ($expr){ … }
两种方式并无太大差别,但多数人都习惯选择第一种方式。
3.关键字、小括号、函数、运算符
尽量不要把小括号和关键字紧贴在一起,要用空格隔开它们。如:
if ($expr){ //if和“(”之间有一个空格 … }
小括号和函数要紧贴在一起。以便区分关键字和函数。如:
round($num) //round和“(”之间没有空格
运算符与两边的变量或表达式要有一个空格(字符连接运算符“.”除外)。如:
while ($boo == true){ //$boo和“==”,true和“==”之间都有一个空格 … }
当代码段较大时,上、下应当加入空白行,两个代码块之间只使用一个空行,禁止使用多行。
尽量不要在return返回语句中使用小括号。如:
return 1; //除非是必要,否则不需要使用小括号
3.9.3 PHP命名规则
就一般约定而言,类、函数和变量的名字应该能够让代码阅读者轻易地知道这些代码的作用,应该避免使用模棱两可的命名。
1.类命名
使用大写字母作为词的分隔,其他的字母均使用小写。
名字的首字母使用大写。
不要使用下画线(_)。
如:Name、SuperMan、BigClassObject。
2.类属性命名
属性命名应该以字符m为前缀。
前缀m后采用与类命名一致的规则。
m总是在名字的开头起修饰作用,就像以r开头表示引用一样。
如:mValue、mLongString等。
3.方法命名
方法的作用都是执行一个动作,达到一个目的。所以名称应该说明方法是做什么。一般名称的前缀和后缀都有一定的规律,如:Is(判断)、Get(得到)、Set(设置)。
方法的命名规范和类命名是一致的。如:
class StartStudy{ //设置类 $mLessonOne = ""; //设置类属性 $mLessonTwo = ""; //设置类属性 function GetLessonOne(){ //定义方法,得到属性mLessonOne的值 … } }
4.方法中参数命名
第一个字符使用小写字母。
在首字符后的所有字符都按照类命名规则首字符大写。
如以下代码:
class EchoAnyWord{ function EchoWord($firstWord,$secondWord){ … } }
5.变量命名
所有字母都使用小写。
使用“_”作为每个词的分界。
如:$msg_error、$chk_pwd等。
6.引用变量
引用变量要带有r前缀。如:
class Example{ $mExam = ""; function SetExam(&$rExam){ … } function &rGetExam(){ … } }
7.全局变量
全局变量应该带前缀g。如:global $gTest、global $g。
8.常量/全局常量
常量/全局常量应该全部使用大写字母,单词之间用“_”来分隔。如:
define('DEFAULT_NUM_AVG',90); define('DEFAULT_NUM_SUM',500);
9.静态变量
静态变量应该带前缀s。如:
static $sStatus = 1;
10.函数命名
所有的名称都使用小写字母,多个单词使用“_”来分隔。如:
function this_good_idea(){ … }
以上各种命名规则可以组合一起来使用,如:
class OtherExample{ $msValue = ""; //该参数既是类属性,又是静态变量 }
说明
这里介绍的只是一些简单的书写和名称规则,如果想了解更多的编码规范,可以参考Zend_Framework中文参考手册。