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 相关文章推荐
基于MySQL分区性能的详细介绍
May 02 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
php 使用 __call实现重载功能示例
Nov 18 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编程中的__clone()方法使用详解
2015/11/27 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
Python读大数据txt
2016/03/28 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
采购经理岗位职责
2014/02/16 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书