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创建多级目录代码
Jun 05 PHP
php记录日志的实现代码
Aug 08 PHP
php获取新浪微博数据API实例
Nov 12 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
php中动态调用函数的方法
Mar 16 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
php单一接口的实现方法
Jun 20 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP简单实现模拟登陆功能示例
Sep 15 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 三维饼图的实现代码
2008/09/28 PHP
PHP $_SERVER详解
2009/01/16 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python制作简单的网页爬虫
2015/11/22 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
python实现图片素描效果
2020/09/26 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
县优秀教师事迹材料
2014/01/31 职场文书
六查六看自查材料
2014/02/17 职场文书
毕业设计说明书
2014/05/07 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书