PHP中应该避免使用同名变量(拆分临时变量)


Posted in PHP onApril 03, 2015

当一个临时变量被赋值多次时,那么将其拆分成多个,除非它是一个循环计数器。

Motivation

临时变量有这多种不同的用途。比如它们可被用作循环中的计数器,在循环中保存结果集,亦或保存一个冗长的表达式的计算结果等等。

这些类型的变量(容器)应该只赋值一次。如果一个同名的临时变量被赋予多个职责,将会影响代码的可读性。这个时候我们应当引入一个新的临时变量以使代码更加清晰易懂。

可能有些注重性能的人会说,引入一个新的变量将会占用更多的内存。的确如此,但是注册一个新的变量不会吸干服务器内存的,这一点请放心,我们不是活在 386 时代,与其在这些无聊的细枝末节上面搞所谓的优化,不如去优化真正的系统性能瓶颈,比如数据库、网络连接等等,而且清晰易懂的代码更容易被重构,发现 Bug,或者解决性能问题等等。

Example Code

很多时候,我们使用同一个 $temp 变量来计算一个物体的不同属性,这种情况比较常见,比如下面这个例子:

function rectangle($width=1, $height=1) {

    $temp = 2 * ($width + $height);

    echo "Perimter: $temp <br />";

 

    $temp = $width * $height;

    echo "Area: $temp";

}

正如你所看到的,$temp 被使用了两次分别用来计算长方形的周长以及面积。这个例子看起来非常直观清晰,但实际的项目代码可能远比这个例子复杂,如果我们把代码改成下面的样子,这样,不管代码如何复杂都不会有混淆感了。
function rectangle($width=1, $height=1) {

    $perimeter = 2 * ($width + $height);

    echo "Perimter: $perimeter <br />";   

 

    $area = $width * $height;

    echo "Area: $area";

}

为不同的东西(如表达式)声明一个新的临时变量吧,大部分时候性能并不是什么问题,而可读性则非常重要。
PHP 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
php判断变量类型常用方法
Apr 24 PHP
php开发文档 会员收费1期
Aug 14 PHP
详解PHP中strlen和mb_strlen函数的区别
Mar 07 PHP
PHP CURL获取返回值的方法
May 04 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
php文件上传类完整实例
May 14 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
PHP5多态性与动态绑定介绍
Apr 03 #PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 #PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 #PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 #PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 #PHP
php实现专业获取网站SEO信息类实例
Apr 02 #PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 #PHP
You might like
php的一些小问题
2010/07/03 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
jQuery设计思想
2017/03/07 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
wxpython实现图书管理系统
2018/03/12 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
英国最大的海报商店:GB Posters
2018/03/20 全球购物
副总经理工作职责
2013/11/28 职场文书
大学生自荐信
2013/12/11 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
安全生产责任书
2014/03/12 职场文书
建房协议书
2014/04/11 职场文书
三方合作协议书范本
2014/04/18 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书