减少if条件判断句提高代码可读性
2018-10-09 本文已影响0人
猴猴猪027
过多的条件判断导致可读性差
过多的if条件判断不仅可读性差,写出来的代码也不整齐。一个解决方法是不断优化自己的代码,每次不使用if重写自己的一小部分代码。这意味着你要学习新的组织代码的方式。
尽管不使用条件判断会让代码可读性变高,但这并不意味着你绝对不允许使用if语句。以下介绍两种方式提高条件判断语句的可读性:
将代码拆分成多个个方法:
- 一个方法包含了条件判断分支,以及调用其他方法的语句
- 真正执行逻辑的犯法,供1种的方法调用
栗子:
function updateOrInitializeOrder(order, updates) {
if(order == null) {
order = new Order();
order.subtotal = updates.subtotal || 0;
order.items = updates.items || [];
// etc
} else {
order.subtotal = updates.subtotal || order.subtotal;
// etc
}
}
按照上面的原则重新组织方法:
function updateOrInitializeOrder(order, updates) {
if(order == null) {
return initializeOrder(updates)
} else {
return updateOrder(order, updates)
}
}
function initializeOrder(updates) {
// …etc
}
function updateOrder(order, updates) {
// …etc
}
后面的写法很容易看清楚各种情况下进行什么样的操作(前提是被调用方法的方法名足够准确)。
重构前的代码需要你在大脑中“单步阅读”才能知道代码逻辑,不仅速度慢,而且容易出错。
条件扁平化,把多层条件判断改为单层
original code:
if (a) {
if(b) {
foo();
}
bar();
} else {
baz();
if(c) {
qux();
}
}
qaz();
嵌套使得代码阅读起来比较费劲,重写判断逻辑如下,虽然代码行数变多,但是分支变得更加清晰。
if (a && b) {
foo();
bar();
qaz();
} else if(a) {
bar();
qaz();
} else if(c) {
baz();
quz();
qaz();
} else {
baz();
qaz();
}