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 09 PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
php无限遍历目录示例
Feb 21 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
PHP7.0安装笔记整理
Aug 28 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 PHP
简单实现php上传文件功能
Sep 21 PHP
Laravel数据库读写分离配置的方法
Oct 13 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
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
php多进程应用场景实例详解
2019/07/22 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
js实现左右轮播图
2020/01/09 Javascript
python字符串替换示例
2014/04/24 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
python2 与python3的print区别小结
2018/01/16 Python
Python中的pack和unpack的使用
2018/03/12 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
三个Unix的命令面试题
2015/04/12 面试题
高三毕业典礼主持词
2014/03/27 职场文书
美容院店长岗位职责
2014/04/08 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
利用python做数据拟合详情
2021/11/17 Python
Pygame Time时间控制的具体使用详解
2021/11/17 Python
SQL注入详解及防范方法
2021/12/06 MySQL