跳转到内容
pstack 中文学习站

设计红旗

你在看 pstack 0.15.6 时的版本,最新版在这里

综合之前,把每个候选筛一遍。出现红旗,就说明这个形态该改或该拒。

浅模块对外暴露的接口很大,藏住的复杂度却很少。判断深度,要看公开接口背后藏了多少能力和策略,再跟接口本身的大小比。接口简单、背后行为扎实的,优先。

深模块和深调用链不是一回事。深调用链把理解拆散到好几层。深模块把能力集中在一个接口后面。

留意这些迹象:

  • 调用方要配合调好几个方法,才能完成一次操作。
  • 公开选项把内部阶段或实现上的选择暴露了出来。
  • 学会了接口,调用方还是得去了解实现。

信息泄漏会让多个模块依赖同一个内部决定。同一种表示、策略或协议细节出现在不止一处,改它就得几处一起改。

把传输层或 wire 格式的类型公开再导出,就是泄漏。在接口后面把外部数据解析成领域类型。存储 schema、框架对象和协议细节都留在内部。

按时间顺序拆分,是按执行先后来组织模块,而不是按模块掌握的知识。把加载、校验、转换、保存拆成几个独立阶段,往往会让同一种表示和它的不变量在好几道边界上重复出现。

围绕领域知识和归属来组织代码。不同时间运行的方法,只要守护的是同一组决定,照样可以放在一个模块里。

透传方法把同样的参数原样转给另一个形状相同的方法。多了一层,却没藏住任何复杂度。

删掉它,或者把职责挪到能完成这个操作的模块。只有转发这一层加了策略、做了适配,或者是一个独立的抽象时,才保留它。