Par*_*gun 0 standards if-statement
根据工作中的领导,两者之间的区别
if (invalid) {
...some code
}
if (!invalid) {
...some code
}
Run Code Online (Sandbox Code Playgroud)
和
if (invalid) {
...some code
} else {
...some code
}
Run Code Online (Sandbox Code Playgroud)
可以理解为一种风格选择。我想知道人们在哪里划线以及您会如何考虑这一点。
PS:是的,我知道否定不应该是 if 语句的“名义”情况。请忽略这一点,因为我试图完全复制引发讨论的相关代码。
这里不仅存在冗余,而且根据语言的不同,正确性/有效性也可能存在差异。考虑这个 C# 代码:
int value;
bool condition = DateTime.UtcNow.Second < 30;
if (condition)
{
value = 10;
}
else
{
value = 20;
}
// No problem, value is definitely assigned
Console.WriteLine(value);
Run Code Online (Sandbox Code Playgroud)
这是完全有效的。但是如果我们以冗余的方式编写它,我们会得到一个编译时错误:
int value;
bool condition = DateTime.UtcNow.Second < 30;
if (condition)
{
value = 10;
}
if (!condition)
{
value = 20;
}
// error CS0165: Use of unassigned local variable 'value'
Console.WriteLine(value);
Run Code Online (Sandbox Code Playgroud)
在 Java 中也是如此,我怀疑在许多其他语言中也是如此。编译器可以考虑这样一个事实,即在if/ 中else,执行将恰好流入这些分支之一。在“两个 if 语句”风格中,语言规则并不能保证。