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代码
Mar 03 PHP
深入解析php模板技术原理【一】
Jan 10 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
MongoDB在PHP中的常用操作小结
Feb 20 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
学习thinkphp5.0验证类使用方法
Nov 16 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
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
两个Javascript小tip资料
2010/11/23 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
python实现爬虫下载漫画示例
2014/02/16 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python中元组的用法整理
2020/06/15 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
公司授权委托书格式样本
2014/10/01 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Python函数中的不定长参数相关知识总结
2021/06/24 Python
Go 中的空白标识符下划线
2022/03/25 Golang