PHP重新定义/重用变量是不明智的

时间:2017-01-13 17:22:09

标签: php variables

以任何方式存在风险或被视为不良做法"修改"像这样的变量一次?我知道不要通过重用$A来创建任何其他函数来创建混淆和冲突,但是在这样的单个简单函数中?看起来像为输出字符串定义新变量就像这样的单位是浪费的,而在长程序中真的会加起来。

if (whatever conditions) {
    $A = $X * $Y;
    if (user selected ft as units) {
        $A = $A / 304.8.' ft';
    }
    elseif (user selected in as units) {
        $A = $A / 25.4.' in';
    }
    echo $A
}

2 个答案:

答案 0 :(得分:3)

简答:

答案很长:

这取决于上下文和函数体的大小,和/或代码片段周围代码的复杂程度。

编码流程的替代方案是:

  • 使用else,并复制代码(在每个if块中移动乘法),这当然不会很好
  • 使用其他奇怪的结构,如switch(true)

您编写的代码片段对我来说非常好,我会将if语句视为更新 $A变量,而不是重用它。我个人经常使用它,我的同事也是如此。

同样,可见性取决于周围的代码。如果此代码段位于另一个if内,那不会很好,但不是因为变量更新,而是因为您堆叠的if太多了。

答案 1 :(得分:1)

通常有替代方法,也不需要定义新的变量,例如:将此移动到一个函数return,然后将该值存储在变量中一次(这也将使代码整齐)。

示例:

function getA($X,$Y) {
    if (user selected ft as units) {
        return ($X * $Y) / 304.8.' ft';
    }
    elseif (user selected in as units) {
        return ($X * $Y) / 25.4.' in';
    }      
}

if (whatever conditions) {
   echo getA($X,$Y);
} 

或者在您的特定情况下有两个回声,例如每个回声,例如

if (whatever conditions) {
    $A = $X * $Y;
    if (user selected ft as units) {
        echo ($A / 304.8).' ft';
    }
    elseif (user selected in as units) {
        echo ($A / 25.4).' in';
    }
}

重新定义$A你正在做的事情是不好的做法,因为它不清楚$A的目的是什么。它是数学运算的结果还是表象元素?

如果您必须重复使用它,至少可以将它重新用于同一目的。