coding-style - 哪种编码风格更好?

标签 coding-style nested

在代码审查期间,一位高级开发人员对我在代码中进行的一些嵌套发表了评论。他建议我设置一个 bool 值,这样我就不会有超过一层的嵌套。我认为我的代码更具可读性,但想获得其他开发人员对此的意见。哪种风格更好?他本能地厌恶嵌套是否成立?

下面是一些简化的代码示例。

嵌套:

If(condition1)
{
    If(condition2)
    {
        if(condition3)
        {
            return true;
        }
        else
        {
            log("condition3 failed");
        }
    else
    {
        log("condition2 failed")
    }
}
else
{
    log("condition1 failed")
}

return false;

bool 驱动:

bool bRC = false;

bRC = (condition1);
if(brc)
{
    bRC = (condition2);
}
else
{
    log("condition1 failed");
    return false;
}

if(bRC)
{
    bRC = (condition3);
}
else
{
    log("condition2 failed");
    return false;
}

if(bRC)
{
    return true;
}
else
{
    log("condition3 failed");
    return false;
}

最佳答案

我更喜欢你的,但我可能会这样做:

if (condition1 && condition2 && condition3)
{
    return true;
}
else if (!condition1)
{
    log("condition1 failed");
}
else if (!condition2)
{
    log("condition2 failed");
}
else
{
    log("condition3 failed");
}
return false;

如果条件是复杂的表达式,那么我可能会在计算 if 语句之前将表达式分配给适当命名的变量,以避免重新计算每个 if 中的值。

这是假设正常模式是所有条件都为真,因此您希望首先进行检查。如果正常模式是一个或多个条件为假,那么我会重新排序并依次检查每个否定,如果所有检查都失败,则简单地返回 true。这也将消除使用临时变量来代替复杂表达式的需要。

关于coding-style - 哪种编码风格更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1641156/

相关文章:

c# - 减少类型转换和更好的造型

java - 关于 boolean 条件双括号的问题(可能是Java)?

python - 在嵌套字典中添加所有键值

ajax - 多个嵌套异步AJAX调用和返回数据的顺序

正则表达式正在运行,但代码看起来很糟糕

c++ - 总是在 lambda 表达式中捕获所有内容是一种不好的做法吗?

coding-style - Common Lisp 对象设置函数风格

java - 整洁的代码 - 如何破坏返回 String 的方法

iphone - 如何将 View 从容器 View 内部移动到另一个容器 View 内部?

android - Pepper - 嵌套动画可能吗?