繁体   English   中英

(如果(x == y)返回true,否则返回false与(如果(x!= y)返回false,否则返回true)有什么区别?

[英]What is the difference between (if (x == y) return true, else false) and (if (x != y) return false, else true)?

if($send != true)
    {
        echo "Error Sending Email: ". $send->message;
        return false;
    }
    else 
    {
        echo "Mail Sent";
        return true;
    }

我现在正在学习PHP,并且正在努力理解为什么以这种方式设置此代码。 上面的代码和这个之间有什么区别:

if($send == true)
    {
        echo "Mail Sent";
        return true;
    }
    else 
    {
        echo "Error Sending Email: ". $send->message;
        return false;
    }

在我看来,他们会做同样的事情,而且我想不出为什么要在另一个上使用一个的原因。 只是偏爱,还是我错过了什么? 我是一个初学者,因此任何输入将不胜感激。

没有区别,大多数情况下您可以做任何喜欢的事情。

请记住,您不需要将布尔值truefalse进行比较,因为它们已经可以满足条件了。 例如

if ($send) {
    echo "Mail Sent";
    return true;
} else {
    echo "Error Sending Email: ". $send->message;
    return false;
}

您也可以像这样返回$send

if ($send) {
    echo "Mail Sent";
} else {
    echo "Error Sending Email: ". $send->message;
}
return $send;

当您选择使用哪种顺序时,我建议考虑哪种顺序更易于阅读和理解。

ps PHP中的一个重要主题是类型杂耍 PHP会自动将不同的类型转换为所需的任何类型。 只需阅读此内容,并在进行不同的条件检查时记住。 有时这可能很棘手。

pps我的马丁·福勒(Martin Fowler)有一本很棒的书-重构:改进现有代码的设计它涵盖了这样的问题-如何组织代码,进行条件检查的最佳方法是什么等。嗯,这不是唯一的书主题,但这是我想到的第一个主题。 这可能是有争议的,并不是所有人都遵循他的建议,但这是您可能想知道的事情:)

我更喜欢先进行错误验证,这样我就不必将错误验证后的所有内容包装到其自己的独立条件中。

考虑以下:

if(!$send) {
    echo "Error Sending Email: ". $send->message;
    return false;
}
echo "Mail Sent";
return true;

对我来说,这更容易阅读,并且在处理多个验证条件时也变得更容易管理。 刚开始时就将所有验证条件都扔进去了,那么您就大吃一惊(假设发生错误时,您退出函数)。 一旦通过每一个验证检查,它就顺手推开。

然而,主要的收获是没有“正确”的答案。 严格来说,这是一个优先事项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM