满月

围绕数据建设系统

最近在基于一套简单结构的数据实现复杂业务,实践踩了前人解决的坑,写在这里,警钟长鸣,多提醒未来的自己

  1. 原语。假设有数据 Set A,想要在A 上建设系统,若要求系统具备完整、可组合的数据使用能力,就设计对应的数据操作原语。包括增加、修改、删除、查询。
  2. 正交。在搭建上层数据模型的时候,一定是基于底层数据查询结果。模型多存储的信息绝对不能和底层数据有任何交叉,一旦有交叉,系统在编写的时候就已经开始腐烂,毕竟大家都想不明白为什么改一处数据还要改多处,这种系统谁能维护的下去。
  3. 不可变数据。数据修改时通常为了偷懒,开发人员常常对数据原地进行修改。这是偷梁换柱,让数据操作都交由数据原语搞定。不过这对语言有要求,如 JS 并非不可变数据结构,所以需要一定的数据 diff 能力。
  4. 类型。一定要声明好所有的数据类型、函数类型,基于完备类型规则的编译器会指导你编写业务。编写正确的类型就是在说明需求,体现了你对业务的理解,任何远离代码的文档都比不上。让类型做到具有最终解释权。实践上看,需要专注于核心类型,非核心的写几万个 any 也无妨。这就是 JS + TS 带给你的自由

← 返回文章列表