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下正则来匹配dede模板标签的代码
Aug 21 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
PHP可变函数学习小结
Nov 29 PHP
PHP大神的十大优良习惯
Sep 14 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
PDO::query讲解
Jan 29 PHP
漂亮的thinkphp 跳转页封装示例
Oct 16 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
Add a Table to a Word Document
2007/06/15 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
js如何打印object对象
2015/10/16 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
Python语言描述连续子数组的最大和
2018/01/04 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
北体毕业生求职信
2014/02/28 职场文书
职业规划实施方案
2014/06/10 职场文书
学校四群教育实施方案
2014/06/12 职场文书
四年级数学教学反思
2016/02/16 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android