PHP中应该避免使用同名变量(拆分临时变量)

yipeiwu_com6年前PHP代码库

当一个临时变量被赋值多次时,那么将其拆分成多个,除非它是一个循环计数器。

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实现多维数组中每个单元值(数字)翻倍的方法。分享给大家供大家参考。具体分析如下: 前提:一个多维数组,它的每个最小单元值都为数字。 要求:写一个函数,将最小单元值翻倍...

PHP二维数组排序简单实现方法

本文实例讲述了PHP二维数组排序简单实现方法。分享给大家供大家参考,具体如下: function multi_compare($a, $b) { $val_arr = array...

PHP程序61条面向对象分析设计的经验小结

(1)所有数据都应该隐藏在所在的类的内部。 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 (3)尽量减少类的协议中的消息。 (4)实现所有类都理解的最基本公有接口[例如...

允许phpmyadmin空密码登录的配置方法

这是因为默认phpmyadmin空密码登录是被禁止的,如果想要phpmyadmin空密码允许登录,就需要修改phpmyadmin相关配置。 在phpmyadmin3安装配置图解教程一文中...

redis+php实现微博(三)微博列表功能详解

本文实例讲述了redis+php实现微博列表功能。分享给大家供大家参考,具体如下: 个人主页显示微博列表(自己及关注人的微博列表) /*获取最新的50微博信息列表,列出自己发布的微博...