架构风格与模式58 条

共变(Connascence)

比耦合更细致的依赖判断工具:共变指“修改一处必须同步修改另一处”。静态共变包括名称、类型、语义、位置、算法;动态共变包括执行、时序、值、身份。

常见形式

形式示例
名称共变方法名与调用处必须一致
类型共变参数类型变化要求调用方同步改
语义共变变量含义变化但名称未变
时序共变必须先初始化再调用,顺序不可换
值共变多处硬编码同一魔法值
共变强度与“跨边界距离”相关:同一模块内可容忍,跨服务边界时应转为显式契约。

易错点

  • 把强共变隐藏在跨团队接口上,变更需要多方同步发布
  • 只关注静态共变,忽略时序共变导致的偶发故障

数据来源与参考

  • 《软件架构:架构模式、特征及实践指南》(Richards & Ford)
  • Meilir Page-Jones 共变相关论文(1992)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌