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的控制语句
Oct 09 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
php适配器模式简单应用示例
Oct 23 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 PHP
php中Swoole的热更新实现代码实例
Mar 04 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将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
大学生旅游业创业计划书
2014/01/29 职场文书
骨干教师培训方案
2014/05/06 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
劳动竞赛口号
2014/06/16 职场文书
人民调解协议书范本
2014/10/11 职场文书
工作简报怎么写
2015/07/21 职场文书
改进工作作风心得体会
2016/01/23 职场文书
八年级数学教学反思
2016/02/17 职场文书