今天在写代码的时候发现 class 中一些地方会有这样的写法:
update(options) { this.elem.innerHTML = ''; this.init(options || this.options); }
一个方法中接收参数,如果调用此方法的时候没传这个参数则使用 class 内部的属性。
逻辑上看来是没问题,但是会导致一个问题。
如果这里出现 BUG 的,就需要去排查是传入的参数的问题还是内部的属性问题,无形中增加了复杂度。
所以,要么改为统一使用参数的 options,要么统一使用 this.options,不要混用。
现在鼓吹的函数式编程也是在一定程度上解决了这个问题,统一由入参决定出参而不使用外部变量。但是在面向对象编程中所有方法这样操作是不现实的,只能自己提高代码质量。