我应该如何订购if语句

How should I order an if statement?

本文关键字:语句 if 何订购 我应该      更新时间:2023-10-16

[我以为这个问题已经被问过了,但我找不到答案]。

在编写if语句时,我将进行比较的内容应该排在第一位还是第二位?(我特别好奇C / C++Java)。

这很重要,还是只是风格?(惯例似乎是"变量第一,价值第二")。

考虑以下代码:

#include <iostream>
int main() {
    int x = 5;
    if ( 5 == x ) {
        std::cout << "X == 5, true." << std::endl;
    }
    if ( x == 5 ) {
        std::cout << "5 == X, true." << std::endl;
    }
    return 0;
}

输出:

X==5,正确
5==X,真。

所以没有出现有任何区别。有没有我遗漏的微妙之处?

这些被称为Yoda条件,据我所知,主要思想是防止意外赋值(即不能赋值给文本)。

是的,值得一提的是,像if (a = 5)这样a不是bool的东西在Java等语言中是不允许的(尽管在C/C++中可以),但正如维基百科的文章所指出的,仍然可以防止不必要的行为:

它还可以解决某些类型的不安全null行为。

String myString = null;
if (myString.equals("foobar")) { /* ... */ }
// This causes a NullPointerException in Java

Yoda条件:

String myString = null;
if ("foobar".equals(myString)) { /* ... */ }
// This is false, as expected

将常量放在第一位(也称为"Yoda样式")可以防止由简单的打字错误引起的问题:

if (x = 5) // if (x == 5) was intended

仍然编译,但做了错误的事情(尽管大多数当前的编译器都会警告这个问题)。

if (5 = x) // if (5 == x) was intended

绝对不能对任何接近正常运行的编译器的东西进行编译。

没有,没有区别。没关系。做你喜欢做的事。就我个人而言:

x == 5

因为它读起来更好(或者我认为是这样)。5 == x听起来不太对劲。但还是个人观点。

我想你会发现,大多数人做x == 5是因为你在比较x,而不是比较5

两者都很好。但当参数位于左侧时,这样做更容易被接受。示例:

if ( x == 5 )

不管怎样。没关系,做你喜欢的事,感觉更舒服。

在大多数情况下,您会发现常见的做法是将变量放在第一位,因为运算符==意味着赋值,而在这里您将值5赋值,所以只有将变量放第一位才有意义。

你的if语句应该是这样的:

    if ( 5 == x ) {
        std::cout << "X == 5, true." << std::endl;
    }