并购重组的程序设计

同事做完了并购重组,进行了一次CodeReview,我把一些感想记录下来,作为今后的参考。

如何无侵入式的扩展组件

通过原型扩展的方式,给组件增加新的能力

可以参考relationChart.ts,对原来的组件进行原型扩展

注意我们自己扩展的方法,都以extend为前缀,便于和组件原始方法区分开。

用到的api,自己做个转发

通过装饰器模式,扩展现有组件的某些方法

将一批api组合为一个方法,方便调用

动画

配置项的设计

可以参考chartData.ts中的动画配置项,以关键帧为设计原则。

思考:如果我们的元素都可以独立操控,那么动画就可以独立出来处理了,类似ZRender。

动画状态status的设计

这个数据结构研究下

如何降低动画开发成本

业务方编写动画的成本太高,因为要理解zrender,还要理解我们制定的潜规则(比如解决冲突问题设计的一些标志位);

1、能不能用TweenMax等等,结合ZRender来做动画?

2、我们搞个动画编辑器工具,动画生成器、元素生成器?

3、将业务动画-行为元素动画-能力进行分离

这部分产品一直在调整,我们去做,成本也很高,人会绑定在上面了。

业务动画合作方式:

一个同事处理业务数据,加工为组件所需的数据和配置项(动画配置项,琢磨透)

一个同事负责组件开发,提供绘制、动画机制

事件处理

DynamicChart的事件机制不好,应该用注册分发机制,这是业内通用的最佳方案了。

必不可少的API

  • zoom
  • resize

开放自定义能力

customNode.js自定义渲染,render和update方法

业务数据的计算

type/normal下

解构,points的计算参考下

getAverage算法

渲染的自动更新

通过defineProperty自动监听状态变量的变更,自动触发绘制功能;这个可以加入D3+canvas的教程【注意】