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(二)
Mar 21 PHP
php截取后台登陆密码的代码
May 05 PHP
使用php 获取时间今天明天昨天时间戳的详解
Jun 20 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php生成QRcode实例
Sep 22 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
smarty简单应用实例
Nov 03 PHP
PHP实现生成数据字典功能示例
May 24 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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数据类型之布尔型的介绍
2013/04/28 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
js中判断控件是否存在
2010/08/25 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
vue组件学习教程
2017/09/09 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python控制多进程与多线程并发数总结
2016/10/26 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python FTP编程基础入门
2021/02/27 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
施工工地安全标语
2014/06/07 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
单位租车协议书
2015/01/29 职场文书
业务员辞职信范文
2015/03/02 职场文书
联谊会开场白
2015/06/01 职场文书
2016十一国庆节感言
2015/12/09 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书