程序中有大量的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让条件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的数量是不会多的。
void Foo()
{
if (condition)
{
return .1.;
}
else
{
return .2.;
}
return .3.;
}