美文网首页
减少if条件判断句提高代码可读性

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

作者: 猴猴猪027 | 来源:发表于2018-10-09 11:51 被阅读0次

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

    过多的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/

    相关文章

      网友评论

          本文标题:减少if条件判断句提高代码可读性

          本文链接:https://www.haomeiwen.com/subject/yaeeaftx.html