c# - 嵌套的 if 条件 vs 多个分离的 if 条件,每个条件都有 return 语句

标签 c# .net if-statement coding-style conditional-statements

下面两个函数中最专业的代码风格是什么?

如果函数变得更复杂和更大,例如有 20 个检查怎么办?

注意:每次检查后我都需要做一些事情,所以我不能将所有内容连接到一个 if 语句中,例如:

if (vehicle.isBus) && (vehicle.numberOfWheels == 6) && (vehicle.motorVersion == 2019)

//first alternative
public bool validate(Vehicle vehicle)
{
    if(vehicle.isBus)
    {
        //do some stuff here related to vehicle.isBus
        if (vehicle.numberOfWheels == 6)
        {
            //do some stuff here related to vehicle.numberOfWheels
            if (vehicle.motorVersion == 2019)
            {
                //do some stuff here related to vehicle.motorVersion
                return true;
            }
        }
    }
    return false;
}

//second alternative
public bool validate(Vehicle vehicle)
{
    if (!vehicle.isBus)
    {
        return false;
    }
    //do some stuff here related to vehicle.isBus

    if (vehicle.numberOfWheels != 6)
    {
        return false;
    }
    //do some stuff here related to vehicle.numberOfWheels

    if (vehicle.motorVersion != 2019)
    {
        return false;
    }
    //do some stuff here related to vehicle.motorVersion

    return true;
}

最佳答案

我遵循的一个黄金法则是 避免嵌套 尽我所能。

使用使代码更具可读性和可理解性的方法。对于仅两种情况,第一种方式更具逻辑性和可读性。如果有 5 个或 6 个条件与 &&, || 相关联,情况可能不再如此和 !。

因此,当检查次数为 5+ 时,您应该更喜欢 第二种选择。

注意:没有每个调用返回的多个 if 意味着 2 个或多个 if 可能为真。

关于c# - 嵌套的 if 条件 vs 多个分离的 if 条件,每个条件都有 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356190/

相关文章:

php - 使用 PHP 对照数组中的值检查值并返回键

c# - WPF MVVM中组合框的默认值

c# - 关于SOLID原则、使用容器和Unity的DI : How to manage the DI mapping in the container?

.net - 对象不为空的排序列表

c# - .NET FromBase64String 长度

.net - 如何在格式字符串中指定自定义千位分隔符

jquery - 如何比较$(this)?

C# 我是否正确使用锁?

c# - 如何将数据从 View Controller 发送到 View Controller Xamarin iOS(C#)

javascript - For loop..if - 只有在所有间隔都通过后才返回 true