程序中有大量的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.; }