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 相关文章推荐
图书管理程序(三)
Oct 09 PHP
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
php 缓存函数代码
Aug 27 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
php实现单链表的实例代码
Mar 22 PHP
smarty内置函数section的用法
Jan 22 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
YII动态模型(动态表名)支持分析
Mar 29 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
python处理cookie详解
2014/02/07 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python编程求质数实例代码
2018/01/31 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
八年级物理教学反思
2014/01/19 职场文书
新年寄语大全
2014/04/12 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
介绍长城的导游词
2015/01/30 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
MySQL批量更新不同表中的数据
2022/05/11 MySQL