关于布尔值的If和If /else
if versus if/else with regard to boolean
以下哪一种实现是最好的,为什么?
bool MyClass::hasCContainerValues(CContainer* container)
{
if(container && container->nrOfValues>0)
{
return true;
}
return false;
}
bool MyClass::hasCContainerValues(CContainer* container)
{
if(container && container->nrOfValues>0)
{
return true;
}
else
{
return false;
}
}
假设您只做了一个简单的测试,那么使用:
bool MyClass::hasCContainerValues(CContainer* container) const
{
return (container && container->nrOfValues>0);
}
然而,如果您要做更多,那么有时认为单个出口点更好(各种静态分析规则集抱怨多个出口点,正确或错误):
bool MyClass::hasCContainerValues(CContainer* container) const
{
bool retval = false;
if(container && container->nrOfValues>0)
{
// something else here perhaps
retval = true;
}
return retval;
}
此外,作为题外话,如果您只测试内容,那么您可能会使方法const
,但这与您的问题无关。
假设这是一个例子,你不想只做return (container && container->nrOfValues>0)
,它们都是OK的,同样正确。
剩下的只是个人意见/品味,这会在这里引发一场宗教战争。我个人更喜欢第一种,但可能会根据两个子句的复杂性选择,即true
和false
路径中的逻辑。
没关系…如果您使用现代编译器,它将优化和转换您的代码。你的两个片段可以产生完全相同的代码。
嗯,较短的代码形式不会影响代码的可读性,所以最好使用较短的形式,也就是第一个。因为它是可读的,它有更少的代码行。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- 使用if-else将数字转换为单词
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++ If/Else 语句被跳过
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 如何将 if else 语句重写为 switch 语句
- 在 C++ 中的 if-else if- else 语句期间更改变量
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 具有嵌套 if-else 的循环的时间复杂度
- 为什么无论输入如何,所有 if-else 语句都会打印?
- 简化对两个布尔值的 4 个 if/else 检查
- 如何在C++中创建 if else 循环而不是多个嵌套?
- 为什么切换 if else 语句的顺序会导致错误?
- 如何使用 if else 语句
- if/else 语句输出由于加号或减号而未显示正确的消息
- 如何解释 #if/#else 位域?(VC++菜鸟)
- if-else 语句仅按特定顺序工作,我不知道为什么