减少if条件判断句提高代码可读性

2018-10-09  本文已影响0人  猴猴猪027

过多的条件判断导致可读性差

过多的if条件判断不仅可读性差,写出来的代码也不整齐。一个解决方法是不断优化自己的代码,每次不使用if重写自己的一小部分代码。这意味着你要学习新的组织代码的方式。

尽管不使用条件判断会让代码可读性变高,但这并不意味着你绝对不允许使用if语句。以下介绍两种方式提高条件判断语句的可读性:

将代码拆分成多个个方法:

  1. 一个方法包含了条件判断分支,以及调用其他方法的语句
  2. 真正执行逻辑的犯法,供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();
}

参考文章:https://revelry.co/coding-without-if-statements/

上一篇下一篇

猜你喜欢

热点阅读