为何咱们要培养本身的编码规范?php
咱们写代码的时候,一个好的编码规范,对咱们来讲可以起到不少意向不到的效果。至少会有一下的好处:css
一、提升咱们的编码效率。整齐划一的代码方便咱们进行复制粘贴嘛!
二、提升代码的可读性。
三、显示咱们专业。别人看到了咱们的代码,发现整个代码的书写流程都整齐划一,瞬间逼格就上去了!
四、方便团队协同工做。你们使用同一的规范,这样就消除了五花八分的书写方式,同一协调!sql
编码规范包含两大块,代码规范和注释规范数据库
其实咱们所写的php脚本,其实也就是由两大块组成的,即对代码的书写、对代码的注释!不一样的框架,甚至不一样的公司,对这方面都会有所不一样,这里只是已将之言,仅仅是对本身的书写规范进行一个总结!但愿能对其余的朋友以启示编程
一、代码的书写规范缓存
文件夹的命名:服务器
文件夹同一使用小写字母。如存放控制器的文件夹,直接命名为controller便可session
文件的命名:app
若是是类文件的话,那么文件的命名应该同类名称保持一致,统一使用大驼峰。如Session.class.php , 对应类名称为Session,
若是是普通的工具脚本,那么统一使用小驼峰,如common.php框架
类名称的命名:
类名称同一使用大驼峰,Cookie类
方法名的命名:
统一使用小驼峰,通常使用 动词 + 名次 的形式来描述该方法的功能,如sendMessage,发送短信。
在面向对象中,遵循一样的规则,可是个别地方有所区别:
public getUserName() protected _getTotalAmount() private _setBlanceAmount()
变量的命名规范:
关于变量,咱们须要多说几点:
一、不管在面向对象仍是非面向对象的语法中,变量统一使用小驼峰,如:$workYears。
可是在面向对象中又有所不一样,public 、 protected 、 private ,protected或者private属性的时候,前面加上了 _ 做为区别
public $startPosition = 1; protected $_salaryAmount =1000; private $_sex = 'formale';
二、若是是常量的话,统一使用大写,中间使用下划线进行分割。
define('CURRENT_SCRIPT', 'index.php'); const TRANSACTION_TYPE = 'income';
三、全局变量,使用大驼峰,前缀加上 _ ,全部的单词首字母大写。由于知道一个变量的做用域是很是重要的,因此局部变量和全局变量应该很明显的进行分开!
$_System_Config;
$_Root_Path;
缩进符
关于编码的缩进符号,咱们统一使用制表符缩进!也许有的人会问为何不适用空格缩进的呢?
缘由很简单,大部分的编辑器都支持制表符等于多少个空格,而使用空格就没得调了!
运算符号
全部的两元运算符号,都应该先后使用空格进行
$name = 'zero'; $age > 18 ? 'adult' : 'children';
常见的流程语句规划
咱们约定,全部的流程语句的花括号都单独占据一行。理由:若是遇到较为复杂的业务逻辑,花括号会出现不少的嵌套,这样一来咱们会混淆个个对应的花括号!
一、分支语句
if($age >= 18 && $age <= 30) { echo 'young man'; } else if($age > 30 && $age <= 60) { echo 'middle aged'; } else { echo 'old man'; } //下面这段代码高手咱们一个问题,在if语句中,即便在能够不要花括号的状况下,花括号也是要写上的 if($age > 60) { echo 'I am very old'; } switch($status) { case 'forbiden': echo 'login forbidden'; break; case 'normal': echo 'login in'; break; default: echo 'status is wrong' : break; }
二、循环语句
while($condition) { statesments......; } foreach($arrayList as $arrayKey => $arrayItem) { states......; } do { statements......; } while($condition) for($start; condition; changenumber) { statements......; }
二、注释的书写规范
不少人说好的代码是不须要注释的,其实,我的认为这是一句很扯淡的话(也可能他是对的,除非整个团队就他一我的,他包办了一切,不用看别人的代码)。
我的的观点是:多写注释,不管是对团队的其余人,仍是对本身都是很是友好的!
根据我的的经验来看,注释至少有如下几个做用:
一、有利于提升代码的可读性,毕竟读你的注释要比读你的代码要容易的多!
二、有利于规划本身的代码布局!之因此这么说,是由于和代码注释的种类有关。“有利于代码的布局”,这种看着有点悬的事,光说是说不明白的,咱们须要实实在在的例子作支撑!
三、因为咱们的注释规范是按照phpdocumentor的要求,因此经过这个工具,还能够生成一份对代码的整体说明,至关于一个使用说明书!
代码注释的种类
一、块注释
块注释,我的认为主要用在了三个地方。对php脚本的描述、对一个大的功能模块的描述、在一行以内不能写完注释的时候,也应该放在块注释中
二、行注释
行注释,我的认为他是配合块注释进行工做的!通常用于描述一个大的功能模块的具体细节!
实战的案例
关于phpdocumentor语法的具体使用细节,这里就很少说了,官网上说的再清楚不过了
从上面的例子中咱们能够看一下代码的布局大体是怎么回事,可是还须要咱们在实践中慢慢摸索
下面附上一些php的编程规范,给你们参考下
1、文件标记:
1.全部php文件,其代码标记均采用完整php标签,不建议使用短标签(短标签容易和xml混淆,php从5.4开始默认不支持短标记)。
2.对于只有php的代码文件,建议省略结尾处的‘?>'。这是为了防止多余的空格或其余字符影 响到代码。
2、文件和目录命名
1.程序文件名和目录名均采用有意义的英文命名,不使用拼音和无心义的字母,只容许出现字母、数字、下划线和中划线字 符,同时必须以‘.php'结尾(模板文件除外),多个词间使用驼峰命名法。
例://类统一采用:DemoTest.class.php
//接口统一采用:DemoTest.interface.php
//其余按照各自的方式:demoTest.{style}.php
3、文件目录结构
规范的目录结构有助于团队协做开发和后期维护。
——app //独立的应用
——class //单个的类文件,共用的类文件
——conf/inc //配置文件或目录
——data //数据文件或目录
——doc //程序相关文档
——htdocs //document_root
——images //全部图片文件存放路径
——css //css文件
——js //js文件
——lib //共用类库
——template //模板文件
——tmp //临时文件目录
——cache //缓存文件
——session //SESSION文件
——template_c //编译后的模板文件
——other
——upload //上传文件
——manage //后台管理文件目录
4、命名规范
1.变量命名:php中变量区分大小写,一个有效的变量名由数字、字母或下划线开头,后面跟任意数量的字母、数字、下划线。
a)程序总体以驼峰命名法,以小写字母开始,同时命名要有意义。(function displayName())
b)PHP全局变量键值两边都有‘_',中间用驼峰命名法命名。($_GLOBAL['_beginTime_'])
c)普通变量总体采用驼峰命名法,建议在变量前加表示类型的前缀。不肯定类型的以大写字符开头。
d)函数名要尽可能有意义,尽可能缩写。
2.类及接口命名:
a)以大写字母开头。
b)多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。
c)类名与类文件名保持一致。
d)程序中全部的类名惟一。
e)抽象类应以Abstract开头。
接口命名规则:
i)采用和类相同的命名规则,但在其命名前加‘i'字符,表示接口。
ii)尽可能保持和实现它的类名一致。
3.数据库命名:在数据库相关命名中,一概不出现大写。
a)表名均使用小写字母。
b)表名使用同一的前缀且前缀不能为空。
c)对于多个单词组成的表名,使用‘_'间隔。
d)表字段命名规则。
i)所有使用小写字母。
ii)多个单词不用下划线分割。
iii)给经常使用字段加上表名首字母作前缀。
iv)避免使用关键字和保留字。
5、注释规范
1.程序注释:写在代码前面而不是后面,单行代码按照习惯写在代码尾部;大段注释采用/**/的方式,一般为文件或函数的顶部,代码内部使用'//';注释不宜太多;代码注释应该描述为何而不是作什么,给代码阅读者提供最主要的信息。
2.文件注释:文件注释通常放在文件的顶部,包括本程序的描述、做者、项目名称、文件名称、时间日期、版本信息、重要的使用说明(类的调用,注意事项等)。版本更改要修改版本号,并加上mofify注释。
3.类和接口注释:按照通常的习惯,一个文件只包含一个类。
4.方法和函数注释:方法和函数的注释写在前面,一般须要代表信息的主要可见性、参数类型和返回值类型。
/**
* 链接数据库
* @param string $dbhost 数据库服务器地址
* @param string $dbuser 数据库用户名
* @param string $dbpwd 数据库密码
*/
6、代码风格
1.缩进和空格:使用4个空格作为缩进,不使用Tab键;变量赋值时,等号两边留出空格。($url = '$_GET['url']';)
2.语句断行:尽可能保证程序语句一行即一句;尽可能不要使一行的代码过长,80个字符之内;若是一行的代码太长,请使用相似于‘.='方式断行链接;执行数据库的sql语句操做时,尽可能不要再函数内写sql语句,而先用变量定义sql语句,而后在执行操做的函数中调用定义的变量。
3.更好的习惯:在代码中使用下面列举的方法,可使代码更优雅。
1):多使用php中已经存在的常量,而不要本身定义。
例://换行
echo $msg."\r\n";
echo $msg,PHP_EOL;
php中PHP_EOL是一个预约义常量,表示一行结束,随着所使用系统不一样,使用PHP_EOL代码可移植性更高
2):在echo中使用逗号作链接符,比用‘.'作链接符代码更美观。
3):单引号的效率高于双引号,但两者在使用上有区别,学会使用printf函数。
例://echo
echo '每一个'.$scholl.'大约有'.floor($avg).'个学生';
//printf
$format = '每一个%s大于有$d个学生';
printf($format,$school,$avg);
4) :详细的注释
5):不要 滥用语法糖,语法糖就是语言中的潜规则,即不具有广泛表明性的语法。