当用C编写if-else语句时,当两者都能产生相同的结果时,有没有理由优先使用操作符“等于”而不是“不等于”?
下面的代码提供了上下文。由此,如果参数计数等于2,则将从用户检索字符串。但是,如果获得任何其他参数值,则会出现一条错误消息。
int main(int argc, string argv[])
{
string msg;
if (argc == 2)
{
msg = GetString();
}
else
{
printf("ERROR: Please only enter a single key! \n");
return 1;
}
但是,我可以通过将if-else循环的条件更改为"not equals to",并翻转相关的操作,来实现与上面完全相同的结果。如下所示:
int main(int argc, string argv[])
{
string msg;
if (argc != 2)
{
printf("ERROR: Please only enter a single key! \n");
return 1;
}
else
{
msg = GetString();
}
无论如何,当两者产生相同的结果时,是否应该优先使用其中一个?
发布于 2016-10-14 14:17:54
这只是一个编码风格的问题。我讨厌嵌套主要逻辑,我将它写成:
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("ERROR: Please only enter a single key! \n");
return 1;
}
string msg = GetString();
}
顺便说一下:main
的签名值应该是int main(int argc, char *argv[])
。
发布于 2016-10-14 14:18:04
我通常更喜欢“等于”,因为它使代码对人类来说更“可读”。它使代码变得更简单。与其说它是一个“规则”,不如说它是一个“很好的编码指南”,因为它根本不会影响运行时(它是我以前公司的编码指南的一部分)。
请检查以下内容:
if ( !isEmpty() )
比起你写的,你的大脑要多花几毫秒的时间来理解测试的作用:
if ( isEmpty() )
即使它对运行时没有影响,我通常更喜欢“等于”而不是“不等于”。
同样的参数也适用于变量和函数名。与isNotSet
相比,更喜欢isSet
属性/方法。阅读像if ( !isNotSet() )
这样的代码比阅读if ( isSet() )
更容易,即使它们最终是等价的。
如果您使用的是您无法控制的代码,并且此代码提供了一个回答否定问题的成员,则:
if ( isNotSet() )
对于开发人员来说绝对比以下代码更容易阅读:
if ( !isNotSet() )
发布于 2016-10-14 14:29:42
正如其他人所说,这是一个风格问题。这并没有真正的区别。
不过,有一件事需要牢记,那就是努力保持一致。如果你有一个块检查If value1 == 2
,试着不让下一个块检查value2 != 4
。唯一不好的风格是不一致的风格。
https://stackoverflow.com/questions/40036165
复制相似问题