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
PHP Socket 编程
Apr 09 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
linux iconv方法的使用
Oct 01 PHP
apache mysql php 源码编译使用方法
May 03 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
php简单实现批量上传图片的方法
May 09 PHP
Smarty变量用法详解
May 11 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
web打印小结
2017/01/11 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python计算日期之间的放假日期
2018/06/05 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
利用python 读写csv文件
2020/09/10 Python
求职者应聘的自我评价
2013/10/16 职场文书
八一建军节演讲稿
2014/09/10 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers
windows server2008 开启端口的实现方法
2022/06/25 Servers