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入门教程 精简版
Dec 13 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
php面象对象数据库操作类实例
Dec 02 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 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
IStream与TStream之间的相互转换
2008/08/01 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
PHP中cookie知识点学习
2018/05/06 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
用Python实现协同过滤的教程
2015/04/08 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python实现k-means算法
2018/02/23 Python
python实现点对点聊天程序
2018/07/28 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
python实现斗地主分牌洗牌
2020/06/22 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
会计职业生涯规划书
2014/01/13 职场文书
员工考核评语大全
2014/04/26 职场文书
降价通知函
2015/04/23 职场文书
2015年暑期见闻
2015/07/14 职场文书
中学政教处工作总结
2015/08/13 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python