PHP 代码规范小结


Posted in PHP onMarch 08, 2012

命名规范
Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线"_",例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线"_",如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线"_"命名,如"HOME_URL";
常用名词
1>list名词(单数),如listApple,一看我们就知道读取苹果列表,我们没有必要写成getApples或者listApples或readApples——因为get我们规定一般用于读取单个数据,如getApple.listApples不加s我们也知道是取苹果列表(保证尽量缩短变量命名);
2>get名词(单数);
3>名词Total,表示某个东西的总数。如expenseTotal;
4>found:表示某个值是否已经找到;
5>uccess或ok:一项操作是否成功;
6>done:某个工程是否完成;
7>error:是否有错误发生;
8>result:返回的结果
代码重构
1.函数或者方法体内的代码尽量控制在一个屏幕内。
2.类中不使用的方法随机删除。
3.修改别人的类中方法,要签名。
4.在每个模块内写个readme文件(用于比较复杂业务的说明或代码说明)。
5.尽量让每个类做自己的事,每个函数做一件事。
常用代码
用&&或||简化操作
简化前:

$a=1; 
$b = 0; 
if(isset($a)){ 
$b=1; 
print($b."\n"); 
} 
if($b!=0){ 
print($b."\n"); 
}

简化后:
$a=1; 
$b = 0; 
isset($a) && ($b=1) && print($b."\n"); 
$b == 0 || print($b."\n");

明显代码看起来更加整齐,更加简单!
判断"=="时,把常量放在前面
之前:

$a = 1; 
if($a = 1){ 
echo '$a == 1'; 
}

之后:
$a = 1; 
if(1 = $a){ 
echo '$a == 1'; 
}

明显,常量放在前面的话,编译器就能判断错误。
正规格式:
$a = 1; 
if(1 == $a){ 
echo '$a == 1'; 
}

查找表法
之前:
/*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/ 
$error = 4; 
$state = 0; 
if($error == 4 || $error == 5 || $error == 7 || $error == 8){ 
$state = 1; 
} 
if($error == 1 || $error == 3 || $error == 6){ 
$state = 2; 
} 
echo "$state \n";

之后:
/*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/ 
$error = 4; 
$state = 0; 
$arr = array(4 => 1, 5 => 1, 7 => 1, 8 => 1, 1 => 2, 3 => 2, 6 => 2); 
isset($arr[$error]) && ($state = $arr[$error]); 
echo "$state \n";

明显代码更加凝练,更加清楚,更易懂,速度也更快!
总结
本来想把什么设计模式也往常用代码里放置,但是太多了,不太好放。这些只是微部而已!
大家如果有更好的写法的话,可以留言。
PHP 相关文章推荐
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
PHP is_subclass_of函数的一个BUG和解决方法
Jun 01 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
PHP错误和异常处理功能模块示例
Nov 12 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
色色整理的PHP面试题集锦
Mar 08 #PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 #PHP
php打造属于自己的MVC框架
Mar 07 #PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 #PHP
php 操作符与控制结构
Mar 07 #PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 #PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 #PHP
You might like
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
一个多文件上传的例子(原创)
2006/10/09 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python 文件转成16进制数组的实例
2018/07/09 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
python导入库的具体方法
2020/06/18 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
应付会计岗位职责
2013/12/12 职场文书
初中政治教学反思
2014/01/17 职场文书
追悼会子女答谢词
2014/01/28 职场文书
亲属关系公证书
2014/04/08 职场文书
疾病防治方案
2014/05/31 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
武夷山导游词
2015/02/03 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书