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 相关文章推荐
MYSQL环境变量设置方法
Jan 15 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 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
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
Python创建日历实例
2014/08/21 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Python如何实现爬取B站视频
2020/05/20 Python
python如何删除列为空的行
2020/07/17 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
高一生物教学反思
2014/01/17 职场文书
函授自我鉴定范文
2014/02/06 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
团委副书记工作总结
2015/08/14 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
详解JS数组方法
2021/11/20 Javascript
关于EntityWrapper的in用法
2022/03/22 Java/Android
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server