File tree Expand file tree Collapse file tree 3 files changed +26
-14
lines changed
Expand file tree Collapse file tree 3 files changed +26
-14
lines changed Original file line number Diff line number Diff line change 1- 本篇是作者在工作中遇到的Bug反思 ,分为原因分析、养成习惯、吸取经验三部分,以此避免再次犯错。同学们可以看一看,是否也犯过一样的错误。最后补充了CodeReview建议,本篇介绍的都与代码质量有关 。
1+ 本篇介绍的内容与代码质量有关。是作者在工作中遇到的Bug反思 ,分为原因分析、养成习惯、吸取经验三部分,以此避免再次犯错。同学们可以看一看,是否也犯过一样的错误。
22
33## 原因分析
44- 未考虑边界条件
4242- 客户端做增强型校验,服务端需要校验吗?需要,因为3种交互方式(URL、超链接、表单)中的URL存在风险,需提高安全性,防止暴力访问
4343- 服务端做增强型校验,客户端需要校验吗?需要,提高用户体验,减少服务器压力
4444
45- ## CodeReview建议
46- - 推荐reviewer是做过这块业务或与之相关性较强的
47- - 提PR时清晰描述功能或问题
48- - 项目上有对应的单测
45+ ## 彩蛋:从流程上把控代码质量
46+ > - 设计阶段
47+ > - 需求复用
48+ > - 提供技术设计方案,确定影响范围
49+ > - 开发阶段
50+ > - 提供测试用例
51+ > - 自动化代码检查
52+ > - 编写执行单元测试
53+ > - CodeReview:推荐reviewer是做过这块业务或与之相关性较强的;提PR时清晰描述功能或问题
54+ > - 测试阶段
55+ > - 自动化端到端测试,用于回归(已有功能在本迭代执行,新功能在下迭代实现并执行)
56+ > - 上线维护阶段
57+ > - 提供错误、性能等监控
58+ > - 提供回滚机制
59+ > - 用户反馈
60+ > - 定期问题复盘
Original file line number Diff line number Diff line change @@ -319,6 +319,10 @@ git rebase -i
319319>
320320> cherry-pick:产生新提交,即新提交id与pick id不同
321321
322+ > 单分支合并与Light Merge
323+ >
324+ > 单分支合并有代码覆盖风险,而Light Merge通过多分支自由组合、自动合并,提高敏捷度(即自由选择要合并的分支)和部署效率(合并失败则停止,有冲突则给出提示,成功则取集成特性分支的最大集合),特别适合多项目的单仓库
325+
322326## 日志操作
323327- 查看提交记录
324328``` bash
Original file line number Diff line number Diff line change @@ -438,19 +438,15 @@ c.fun(3); // undefined、0、1、1,最后只有一个闭包,过程中产生
438438
439439## 编程范式
440440- 命令式编程:关注怎么做
441- - 面向过程编程
441+ - 面向过程编程
442442
443443- 声明式编程:关注做什么,比如SQL、HTML、CSS。特点是不必创建变量存储数据;不包含循环控制语法如for、while
444- - 面向对象编程OOP :使用简单,共享状态
445- - 面向函数编程:无副作用,适合分布式计算集群的应用场景,但过度使用会导致可读性稍弱差、学习难度大(掌握λ演算、代数、范畴学等基础)
444+ - 面向对象编程 :使用简单,共享状态
445+ - 面向函数编程:无副作用,适合分布式计算集群的应用场景,但过度使用会导致可读性稍弱差、学习难度大(掌握λ演算、代数、范畴学等基础)
446446
447- - * 面向切面编程AOP( 不是一种编程范式,是一种编程思想)
447+ > * 面向切面编程AOP(Aspect-Oriented Programming) 不是一种编程范式,是一种编程思想
448448
449- 英文名称为Aspect-Oriented Programming,目的是针对业务处理过程中的切面进行提取,所面对的是处理过程中的某个步骤或阶段,实现逻辑过程中各部分间的低耦合性
450-
451- 可用于数据埋点、功能延伸等
452-
453- 示例
449+ 目的是针对业务处理过程中的切面进行提取,所面对的是处理过程中的某个步骤或阶段,实现逻辑过程中各部分间的低耦合性。可用于数据埋点、功能延伸等。示例如下,
454450 ``` javascript
455451 Function .prototype .before = function (fn ) {
456452 var __self = this ;
You can’t perform that action at this time.
0 commit comments