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 MemCached高级缓存配置图文教程
Aug 05 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
解决python tkinter界面卡死的问题
2019/07/17 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
python多线程同步实例教程
2019/08/11 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
Python是如何进行类型转换的
2013/06/09 面试题
计算机专业毕业生推荐信
2013/11/25 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
审美与表现自我评价
2015/03/09 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书