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句法规则详解 入门学习
Nov 09 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
php静态文件返回304技巧分享
Jan 06 PHP
Yii CGridView用法实例详解
Jul 12 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
PHP递归算法的简单实例
Feb 28 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php合并js请求的例子
2013/11/01 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
JavaScipt基本教程之前言
2008/01/16 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
小程序实现搜索框功能
2020/03/26 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python 识别图片中的文字信息方法
2018/05/10 Python
python的concat等多种用法详解
2018/11/28 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python中栈的原理及实现方法示例
2019/11/27 Python
python如何支持并发方法详解
2020/07/25 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
表决心的诗句大全
2014/03/11 职场文书
企业宣传口号
2014/06/12 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js