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中使用灵巧的体系结构
Oct 09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php短域名转换为实际域名函数
Jan 17 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
Yii框架安装简明教程
May 15 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 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
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
详解Django中的权限和组以及消息
2015/07/23 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
车间主管岗位职责
2013/11/14 职场文书
青年文明号事迹材料
2014/01/18 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
完美的中文自荐信
2014/05/24 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
家长会欢迎词
2015/01/23 职场文书
重温入党誓词主持词
2015/06/29 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技