PHP - 如果是这种情况,什么都不做

时间:2010-09-03 09:12:55

标签: php logic

这是一种正确的说法:如果是这种情况,什么都不做?

if ( ($hostNameInfo == $hostNameInput) && ($hostAddressInfo == $hostAddressInput) )
{
  return;
}

更新 我不在功能里面。 :( 所以回报只是胡说八道。

这是更多代码:

//if the input fields are equal to database values, no need to update and waste resources,hence, do nothing:
if ( ($hostNameInfo == $hostNameInput) && ($hostAddressInfo == $hostAddressInput) )
{
  //do nothing
}
//If, however, (they are NOT equal and) input fields are not empty:
elseif (!empty($hostNameInput) && (!empty($hostAddressInput)))
{
 //do something.
}

提前致谢, MEM

5 个答案:

答案 0 :(得分:14)

也许你应该做相反的事情,如果你的病情没有得到证实就做点什么

if($hostNameInfo != $hostNameInput || $hostAddressInfo != $hostAddressInput) {
   // do something
}

答案 1 :(得分:5)

无所事事,你根本无法输入:

function relax() {
    ;
}

if (($hostNameInfo == $hostNameInput) && ($hostAddressInfo == $hostAddressInput)) {
    relax();
}

答案 2 :(得分:1)

我假设你在一个函数中,在这种情况下它会按照你的期望进行,尽管函数中的多个return语句可以导致混淆和缺乏可读性。(显然我错了。)

相反,我更喜欢让所有条件块(我对if的{​​{1}}块之间的代码的描述)包含相关代码,即以这种方式编写条件检查当需要额外处理(子流)时,总条件评估为{...}

true

此外,您可以提取条件语句以提高 的可读性和控制流的简单性:

if ($hostNameInfo != $hostNameInput || $hostAddressInfo != $hostAddressInput) {
    // do stuff, else skip
}

更新(基于更新的问题)。请考虑一下:

$hostInfoEqualsInput = ($hostNameInfo == $hostNameInput && $hostAddressInfo == $hostAddressInput);
if (!$hostInfoEqualsInput) {
    ...
}

<强> ERGO
通过编写满足您想要的条件来最小化分支率并避免空块,而不是所有要忽略的异常(主观)。

答案 3 :(得分:1)

你在这里谈论最佳实践..
最佳实践之一是例程应该single exit point,尽管它是widely discussed并且取决于开发人员/风格。

更新:

新答案,因为问题已经改变:

如果代码只能在某些情况下运行,则看不出任何添加额外检查的理由。为了使代码更具可读性,您应该坚持使用易于维护的任何内容,例如:(或类似的东西):

// Do something only if required
if (($hostNameInfo != $hostNameInput) || ($hostAddressInfo != $hostAddressInput)) &&
    !empty($hostNameInput) && !empty($hostAddressInput))
{
    echo 'place some code here';
}

答案 4 :(得分:-1)

另一种可能性是抛出一个新的异常,稍后您可以在应用程序中捕获该异常。

UPDATE:不在函数内部,这可能是一个坏主意。