当前位置: 首页 > 编程笔记 >

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

金钊
2023-03-14
本文向大家介绍PHP中应该避免使用同名变量(拆分临时变量),包括了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";

}


为不同的东西(如表达式)声明一个新的临时变量吧,大部分时候性能并不是什么问题,而可读性则非常重要。

 类似资料:
  • 我正在学习表变量的更多细节。它说临时表总是在磁盘上,表变量在内存中,也就是说,表变量的性能比临时表好,因为表变量比临时表使用更少的输入输出操作。 但有时,如果一个表变量中有太多无法包含在内存中的记录,该表变量将像临时表一样放在磁盘上。 但我不知道“记录太多”是什么。100000条记录?还是1000000条记录?如何知道我使用的表变量是在内存中还是在磁盘上?SQL Server 2005中是否有任何

  • 问题内容: 如果我有这样的列表理解: 有效地创建一个新列表,该列表中的每个元素都包含一个空字符串,我从不使用。有没有更干净的方式编写此代码,所以我不必声明未使用的变量? 问题答案: 是for循环和元组分配中被忽略成员的标准占位符名称,例如 顺便说一句,您的列表可以在没有列表理解的情况下编写(假设您要创建不可变成员(如字符串,整数等)的列表)。

  • 问题内容: 我读到应该避免赞成和。我对弄乱Loop并没有信心,也没有完全理解Codex。 下面的代码是否使用?如果是,并且由于应该避免,那么您能建议一种不使用但仍然完成相同任务的方法吗? 此代码用于按随机或按价格对帖子进行排序。 。 使用此代码将链接A(随机)和链接B(价格)发布在我的菜单中。因此,网站的访问者只需单击链接即可对帖子进行排序。 问题答案: 我已经针对WPSE这个主题做了非常详细的解

  • 美元符号($)是命名变量的有效字符,例如,但是当我们讨论命名约定时,我应该在什么时候使用这个符号呢? 例如,下划线最常用来分隔单词,因为不允许有空格。

  • 问题内容: 我有一些这样的代码: 而且我收到警告,因为使用in闭包是可变变量,所以可能会引起问题。 我该如何避免呢?我的意思是我如何将不可变变量发送给回调,因为这是一个for循环,并且我无法更改代码?换句话说,如何将参数传递给闭包? 问题答案: 您需要创建一个范围以使用自执行功能正确捕获。这是因为整个for循环是一个作用域,也就是说,每次循环都捕获相同的变量。因此,回调将以错误的id结尾,因为的值

  • 问题内容: 我的印象是,尽管语法有所不同,但下面的函数a和b在逻辑上是等效的。但是,它们不是,我也不了解它们之间的区别。 在我看来,他们俩都在分配: x对变量z的值, y的值对应于变量x,并且 x + y的值等于变量y。 有人能帮助消除我对多变量分配以及函数a和函数b之间的逻辑差异的误解吗? 问题答案: 分配可以认为是“原子”操作。也就是说,认为在所有操作完成之前,“ 左侧”的所有值都是“冻结”的