Programming

diagnostics

在提供一个系统,或工具时,除了功能的实现,还需要能够提供排错工具,这类工具被称为 diagnostics。
这样可以省去使用者自己去查找日志分析,甚至必须要看源码的过程。
使用者面对一个全新工具,是否拥有完备的 diagnostics 系统,是可以决定这个工具需不需要继续被使用的关键点。

Js

Object.assign

如果需要对一个对象添加属性,最好使用 Object.assign,效果与 super 相同,如果仅仅是普通属性,用解构合并也可以。但解构会固化 getter,比较奇怪的特性,调用了一次 getter 获取值,然后抛弃了 getter:

  1. var a = {
  2. get c() { return 2 }
  3. }

image.png
如果是在 Object.assign 第二个参数的对象中的 getter 也会固化,所以做对象属性添加,除了类的 super,应该尽量使用 Object.assign(originObj, extraFields) 的形式。解构仅用于值类合并。