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开发GUI
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
PHP实现MySQL更新记录的代码
Jun 07 PHP
隐性调用php程序的方法
Mar 09 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
实例讲解php数据访问
May 09 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
百度实时推送api接口应用示例
2014/10/21 PHP
学习php开源项目的源码指南
2014/12/21 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
PHP chr()函数讲解
2019/02/11 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python imread、newaxis用法详解
2019/11/04 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
广播体操口号
2014/06/18 职场文书
小学优秀班主任材料
2014/12/17 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android