0532-58820295

提高软件代码质量的6个小技巧

发布时间:2021-7-26
来源:

一、严格遵循公司的编码规范

  如果你还在学习阶段,可以先遵循大厂的代码规范:

  · TGideas(腾讯)

  · netease(网易)

  · 凹凸实验室(京东)

  · Airbnb(阿里巴巴)


二、限制变量作用域

  尽量使用let、const来代替var,避免全局变量被污染。


三、限制传入参数的个数

  随着我们公司业务需求的不断增加,传入参数的数量也可能会随之增加,参数组合过多导致函数的复杂度呈几何倍的增长。

  所以我们一般限制最大传参个数为3个。

  超过3个,我们可以直接把它们包在Object内再传入。


四、简化条件表达式

  举个小例子,还有很多使用场景大家自行研究。

  业务逻辑:学号(num)>200 而且 学校(school)是掘金小学的学生是女生。

  function isGirl(num,school){

    if(num>200&&school==="掘金小学"){

      return true;

    }else{

      return false;

    }

  }

  简化后:

  function isGirl(num,school){

      return num>200&&school==="掘金小学";

  }


五、一个function只做一件事

  一个函数只需要关注一件事。

  业务逻辑:判断公司今年是盈利还是亏损

  /*

      在团队协作时,其他成员在其业务中有个需求需要知道今年是否盈利,

      如果只看isProfit()函数的字面意思就用的话(未告知此函数有发送邮箱给老板的行为)

      会导致莫名其妙邮箱发送的配额就用完了,和发送多封重复邮件给老板的严重事故。

  */

  function isProfit(sum,cost){

    let result = sum-cost;

    if(result>0){

      (x)send true to Boss by email;//不要夹带私货

      return true;

    }else{

      (x)send false to Boss by email;//不要夹带私货

      return false;

    }

  }

  如果公司确实有判断今年是否盈利,并告知老板这一需求,可以这样修改:

  //发信息给老板

  function sendEmail(result){

    send result to user by email;

  }

  //判断是否盈利

  function isProfit(sum,cost){

    return sum-cost>0;

  }

  //判断今年是否盈利,并告知老板

  function isProfitService(sum,cost){

    let result = isProfit(sum,cost);

    sendEmail(result);

    return result;

  }

  核心思想:

  1.函数的命名要与行为一致。

  2.非要做两件事,要使用xxx+Service()命名函数来提醒这个函数可能有两个事件。


六、early return

  过度使用if...else if...else嵌套,极大地增加了代码的阅读难度和降低了项目的维护效率。

  //看着累吗?逻辑清晰吗?

  function start(num){

    if(num<50){

      if(n !== 0){

        if(n !== 1){

          return start(num-1) + start(num-2);

        }else{

          return 1;

        }

      }else{

        return 0;

      }

    }else{

      return "Game Over";

    }

  }

  使用early return可以在一定程度上解决这个问题。

  function start(num){

    if(num>=50){

      return "Game Over";

    }

    if(num===0){

      return 0;

    }

    if(num===1){

      return 1;

    }

    return start(num-1) + start(num-2);

  }


更多新闻

专业测试,请联系我们!
0532-58820295