这是我参与「第五届青训营 」伴学笔记创作活动的第 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 包管理自动化代码质量检查的规则集,自动安装,不在本地写规则
- 使用统一的持续集成服务。质量检查不通过的项目不能上线
- 建立代码质量评分制度。让项目与项目之间能够横向对比,项目自身能够纵向对比,并且进行汇总反馈
参见 链接
总结
代码质量的控制,需要综合考虑风格、效率、约定、使用、设计等等多种因素,并使用多种手段积极采取控制措施