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
我的论坛源代码(三)
Oct 09 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
php笔记之:数据类型与常量的使用分析
May 14 PHP
php实现简易聊天室应用代码
Sep 23 PHP
php curl常用的5个经典例子
Jan 20 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
thinkphp 验证码 的使用小结
May 07 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 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判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
Python对列表排序的方法实例分析
2015/05/16 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
Python argparse模块使用方法解析
2020/02/20 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
幼儿教师个人求职信范文
2013/09/21 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
2015年司法所工作总结
2015/04/27 职场文书
高一军训感想
2015/08/07 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python