编程中if格式

编程中if格式

程序中有大量的if条件判断语句,if个格式至关重要, 关系到程序的可读性、健壮性等。

下面和大家分享比较好的写法。

推荐格式:

if (...) 
{
    ...
}

和

if (...)
{
    ...
}
else
{
    ...
}

不过长

事不过三,超过如下格式的长度就可以考虑用别的写法来代替了:拆分成较小的函数、表、多态等。

if (...)
{
    ...
}
else if (...)
{
    ...
}
else
{
    ...
}

不过深

同样事不过三,最好一、二层,避免三层,杜绝三层以上。

if (...)
{
    if (...)
    {
        if (...)
        {
            ...
        }
        else
        {
            ...
        }
    }
    else
    {
        ...
    }
}
else
{
    ...
}

逻辑运算符

尽可能少

一个if的条件,应尽可能少,多了程序的逻辑很复杂。条件过多时需设法减少,采用表、提取为方法等。

&& 和 ||

一行最好只出现一个&&或||,较多时单行代码过长,条件分割不明显。

位置在条件condition的后边,条件语句会在同一垂直直线上,代码较为整洁些,可读性好。

if (... &&
    ... &&
    ...) 
{
    return;
}

而不是

if (... && ... && ...) 
{
    return;
}

条件方法

当方法直接返回可直接判断的结果,可以直接写在if的condition中;如果返回的是一个类的实例,不宜直接判断,应先保存结果再判断。

if (TryGet(...)) 
{
    return;
}

和

var result = GetResult();
if (result.success) 
{
    ...
}

大括号

不省略

不省略大括号,即使if的statements中仅有return,也不要省略大括号。

if (...) 
{
    return;
}

而不是

if (...) return;

独立成行

独立成行的大括号会在同一垂直直线上,程序看起来清晰、明了。

if (...) 
{
    return;
}

而不是

if (...){
    return;
}

else是否存在

else让条件condition之后代码分成两部分。明确区分代码的执行条件:.1.条件不满足时执行,.2.函数未提前退出一定执行。如果存在.1.,一定要保留else,不要让.1.和.2.合并。

void Foo()
{
    if (condition)
    {
        statements
    }
    else
    {
        .1.
    }
    
    .2.
}

上面的说法正确吗?

当我遇到更复杂情况的时候,我改变了起初的写法。当 .1.、.2.、.3.执行的内容相同时,冗余太多了,我选择了合并。

void Foo()
{
    if (conditionOne)
    {
        //执行部分语句,但不退出函数。

        if (conditionAnother)
        {
            statements
        }
        else
        {
            .1.
        }
    }
    else
    {
        .2.
    }

    .3.
}

变成

void Foo()
{
    if (conditionOne)
    {
        //执行部分语句,但不退出函数。

        if (conditionAnother)
        {
            statements
        }
    }

    .1.
}

return

最早return。一般不用局部变量存储结果,能返回值时直接返回。不要担心return语句较多,只要不写长函数,return的数量是不会多的。

void Foo()
{
    if (condition)
    {	
        return .1.;
    }
    else
    {
        return .2.;
    }
    
    return .3.;
}
打赏