JavaScript 代码质量 | 青训营笔记

48 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

风格效率约定使用设计

Leftpad 事件

function leftpad (str, len, ch) {
  str = String(str)
  var i = -1
  if (!ch && ch !== 0) ch = ''
  len = len - str.length
  while (++i < len) {
    str = ch + str
  }
  return str
}
  • npm 模块粒度
  • 代码风格
  • 代码质量&效率
function leftpad (str, len, ch) {
  str = "" + str
  const padLen = len - str.len
  if (padLen < = 0) {
    return str
  }
  return ("" + ch).repeat(padLen) + str
}

交通灯循环问题

回调函数形式

......

数据抽象形式

过程抽象方式

异步及函数式

判断整数是否为4的幂问题

循环除以4,判断余数方法

自低位开始,循环和0b11执行与运算,判断是否为0,即仅最高位为1(利用与运算优化)

直接转换为二进制,并利用正则表达式匹配,保证仅最高位为1

利用4的幂的数的二进制特性处理

洗牌

分红包

“切西瓜法”

从已分割的一组红包中选中金额最大的那个

代码质量控制

  • 规范化 建立代码规范与 Code Review 制度
    • 风格规范 缩进、换行、大小写等风格问题
    • 实践规范 规避一些常见的隐患,或者针对特定问题的最佳实践
    • 业务规范 与业务有关的特殊要求
  • 自动化 使用工具自动检查代码质量
    • 代码规范检查 包括风格规范、实践规范、业务规范
    • 重复率 重复出现的代码区块占比,通常要求在5%以下
    • 复杂度 总行数,模块大小,循环复杂度等
    • 检查覆盖度 经过检查的行数占代码库总行数的比例
  • 流程化 将代码质量检查与代码流动过程绑定
    • 编辑时 使用编辑器插件,实时运行质量检查
    • 构建时 在本地或者开发机的构建脚本中运行质量检查
    • 提交时 利用 Git Hooks,提交代码或者生成 Pull Request 时运行质量检查
    • 发布时 在发布脚本中再做一次质量检查,通常与自动化测试放在一起
  • 中心化 以团队整体为视角,集中管理代码规范,并实现质量状况透明化
    • 代码规范统一管理。使用 Git 或者 NPM 包管理自动化代码质量检查的规则集,自动安装,不在本地写规则
    • 使用统一的持续集成服务。质量检查不通过的项目不能上线
    • 建立代码质量评分制度。让项目与项目之间能够横向对比,项目自身能够纵向对比,并且进行汇总反馈

参见 链接

总结

代码质量的控制,需要综合考虑风格、效率、约定、使用、设计等等多种因素,并使用多种手段积极采取控制措施