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 相关文章推荐
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
PHP网站备份程序代码分享
Jun 10 PHP
php 生成短网址原理及代码
Jan 23 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
PHP文件缓存类实现代码
Oct 26 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
PHP crc32()函数讲解
Feb 14 PHP
PHP中“=&gt;
Mar 01 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
PHP7修改的函数
2021/03/09 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
详解如何设置Python环境变量?
2019/05/13 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
python的faker库用法
2019/11/28 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
企业指导教师评语
2014/04/28 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
学术会议领导致辞
2015/07/29 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书