【发布时间】:2015-06-30 09:45:27
【问题描述】:
这不是关于链式 ifs 或 ifs 和 else ifs 的问题。我已经在 SO 中看到了很多这样的问题。
我的问题也不是关于性能,更多的是关于编码标准和可读性。
考虑一下我在一个项目中经常看到的以下琐碎的伪代码:
if (expression > 0)
{
return 1;
}
else if (expression < 0)
{
return -1;
}
else
{
return 0;
}
我通常以稍微不同的方式编写这种构造:
if (expression > 0)
{
return 1;
}
if (expression < 0)
{
return -1;
}
return 0;
当然还有第三种选择,即任何方法都不应有多个 return 语句,当方法的复杂性较低时,我发现这过于限制和繁琐:
int retVal;
if (expression > 0)
{
retVal = 1;
}
else if (expression < 0)
{
retVal = -1;
}
else
{
retVal = 0;
}
return retVal;
在编写这些类型的结构时,上面列出的选项之一是否更正确?性能方面,我知道选择完全无关紧要,但从可读性的角度来看,我更喜欢避免 if - else if 语句。话虽如此,很多同事都不同意我的观点,即使他们不能给我任何令人信服的论据。
【问题讨论】:
-
这是一种偏好。
-
一切取决于您的喜好。我会说第一个选项看起来最好,因为它以合乎逻辑的方式将相关的 if 组合在一起。如果你(可以)跳过大括号,它会看起来更整洁。
-
失望的选民愿意发表评论吗?
-
@InBetween:当然。你的问题的问题是没有好的或坏的答案。 Stackoverflow 不适合讨论这些事情。
-
我偏爱选项 3。10 多年来,我们避免使用“break”(switch 语句除外)和“return”(函数末尾除外)。经验表明,这种编码标准提供了一些可读性优势,并且在调试模式下,在过程结束时设置单个断点有一些优势。
标签: c# if-statement coding-style