搬砖方法论:时序耦合(Temporal Coupling)

什么是时序耦合

在两个或更多的类型、成员之间,必须先调用一个才能调用另一个。这种必须按照特定顺序调用的耦合关系叫做时序耦合。

哪些情况会遇到时序耦合

  • 读取json、excel等数据时,必须先调用Initialize这类的函数。
  • Lua文件中的全局Helper类,在业务逻辑中使用需要显示的调用Require后才能使用。
  • 使用各种Manager时,需要手动再次确认是否进行了初始化。

以上的示例,都是一种"design smell",需要我们十分注意。

时序耦合的危害

  • 造成学习成本的提高,在使用时需要各种注意事项。
  • 修改变得困难,这种顺序上的耦合可能会将本应该无关的类型绑定在一起,对其中的一个修改会造成另一个使用的bug。
  • 这种时序耦合常常会造成偶现bug,而偶现bug一般是非常难以定位。

减少时序耦合的手段

  • 【宏观】分层,同层调用达到无时序耦合。
  • 【微观】使用构造注入和函数注入来避免时序耦合。详见:注入的三种方式

更多文章详见主页:www.aihailan.com

发表评论