代码检验标准

代码检验清单目录设置是否合理、模块划分是否清晰?是否容易扩展?添加新功能,是否容易实现?代码是否可以复用?是否可以复用已有的项目代码或类库?是否有重复造轮子?代码是否容易测试?单元测试是否全面覆盖了各种正常和异常的情况?代码是否易读?是否符合编码规范?是否遵循经典的设计原则和思想?业务检验清单代码是否实现了预期的业务需求?代码逻辑是否正确?是否处理了各种异常?日志打印是否得当?是否方便debug排...

1 周前 笔记

Vue3 响应式实现

Vue3 的响应式实现与 Vue2 版本类似,都是在 getter 里收集依赖,setter 触发依赖更新,不同点在:数据劫持从 Object.defineProperty 变为 Proxy,前者只能劫持存在的对象属性,后者可以劫持任意属性,包括新增的属性,并且支持数组原生方法增删改的响应式。收集和触发依赖的逻辑有变化,使用了一个全局 Map 对象:实现响应式实现了 reactive、ref、wa...

2 周前 笔记

Vue2 数据双向绑定实现

Vue 使用数据劫持和发布订阅模式,通过 Object.defineProperty 劫持对象属性的 getter 和 setter,当数据改变时,触发依赖收集器通知对应的数据观察者(watcher)做出更新回调更新视图。Vue 数据双向绑定主要通过 Compile,Observer,Watcher 实现,Compile 用于编译解析模板指令、插值,Observer 用于劫持数据,监听数据的变化,...

2 周前 笔记

Promise/A+ 规范实现

Promise 是解决异步编程回调嵌套过多导致代码可读性下降的方法之一。实现要点一个 promise 实例有三个状态:pending 等待中、fulfulled 已执行、rejected 已拒绝,状态只会从 pending 切换到 fulfulled 或 rejected,且保持不变。只有调用了 resolve 或 reject 方法,then 函数的两个参数 onFulfilled 、onRej...

3 周前 笔记

作用域

编程语言几乎都有作用域这个功能,作用域是一套规则,用于在确定在何处以及如何查找变量。作用域分词法作用域和动态作用域。词法作用域大多数语言采用的方式,如:Javascript。词法作用域在书写代码时就已经确定了变量的所处位置,取决于使用者将代码和块作用域写在哪决定。可以通过 Javascript 的 eval、with 欺骗词法作用域达到修改变量的目的。词法作用域查找只会查找一级标识符,比如 a、b...

1 个月前 笔记

编译型语言执行代码前的三个阶段

分词/词法分析(Tokenizing/Lexing)解析/语法分析(Parsing)代码生成分词/词法分析这个阶段会将代码字符串分解成有意义的代码块(词法单元,Token)。例如 var a = 10,词法分析器会将它分解成:var(关键字)、a(标识符)、=(赋值操作符)、10(数字)。解析/语法分析语法分析的任务是在词法分析的基础上将词法单元数组组合成各类语法短语(抽象语法树 Abstract...

2 个月前 笔记

React Native IOS 开发笔记

记录遇到的问题以及如何解决。问题创建 React Native App 有两种方式, 一种使用 npm install create-react-native-app -g 安装,通过 create-react-native-app 命令来初始化你的应用。特点是:这种方式官方说是不需要安装 Xcode 或者 Android Studio,也不需要配置任何工具来构建代码,只要在手机安装 Expo 客...

3 年前 笔记

进制之间的转换

其它进制数 => 十进制将目标进制数按从低位到高位(即从右往左)计算,第0位的权值是目标进制数的0次方,第1位的权值是目标进制数的1次方,第2位的权值是目标进制数的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。parseInt(string, radix)解析一个字符串,并返回一个整数。string - 必需。要被解析的字符串。radix - 可选。表示要解析的数字的基数。该值介于2...

3 年前 笔记