【迈向高薪】提高代码质量的6个小技巧

发表于:2021-7-26 09:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:battleKing    来源:掘金

  一、严格遵循公司的编码规范
  如果你还在学习阶段,可以先遵循大厂的代码规范:
  · 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);
  }

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号