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
PHP 强制下载文件代码
Oct 24 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
Zend Framework常用校验器详解
Dec 09 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 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 simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
js转换对象为xml
2017/02/17 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
Vue 项目代理设置的优化
2018/04/17 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python实现完整的事务操作示例
2017/06/20 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
Python使用re模块验证危险字符
2020/05/21 Python
selenium如何定位span元素的实现
2021/01/13 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
四好少年事迹材料
2014/01/12 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书