我的第一个片段:
public bool isSmall(int x)
{
if (x == 0)
{
return true;
}
else
{
if (x < Smallest)
{
return true;
}
else
{
return false;
}
}
}
我的第二个片段:
public bool isSmall(int x)
{
if (x == 0)
{
return true;
}
if (x < Smallest)
{
return true;
}
return false;
}
我想要的是if (x == 0)
只返回true,如果没有做另一次比较,if (x < Smallest)
,如果true返回true,否则返回false。
我知道我的拳头和第二个代码做同样的事情,但我想知道哪种方式写它更好,更亲切,更安全?他们有什么真正的区别吗?或者只是两种方式来写它?
答案 0 :(得分:6)
编译器可能会将您的任一个例程优化为以下内容:
public bool IsSmall(int x)
{
return (x == 0 || x < Smallest);
}
要了解原因,请写出&amp;为每组方法填写一个布尔真值表。
答案 1 :(得分:1)
他们做同样的事情。如果代码是直接编写为编写的,那么第二个可能会稍微高效一些(因为省略了其他的一个分支语句)。但是,所有现代编译器都会优化它以使它们完全相同。
要回答你的问题(这是更好的),你更容易阅读和理解,因为他们做同样的事情。
答案 2 :(得分:1)
两者都是可读的,但从不同的角度来看。
第一个更安全,因为更具可读性(可读性方面可以阅读并更容易说明)
我通常使用第二个,它看起来更干净(看起来更可读但更难理解)
关于可读性;对于少量的if-else,第一个更好但是if-else(如10)的第二个更好。