我刚刚开始使用 Go (GoLang),我发现它是一门很棒的语言。然而,经过多年的 UML 和面向对象的方法,我发现对 Go 程序进行建模(逆向工程)有点问题,因为 Go 结构包含属性/状态,但没有方法,以及使用结构作为参数的方法/函数(即使是那些可以使 Struct 看起来像对象的魔术),不包含方法或状态。
这是否意味着我应该使用另一种方法来对 Go 程序进行建模,或者 UML 是否足以对语言结构进行建模?
是的,我知道如果您在 Structs 上使用方法,UML 中对象的行为可以通过 Struct 和 Struct 方法的组合映射到 Go,但我发现这是错误的,范式中的阻抗不匹配排序。
是时候采用一种新的(消除这种想法!)图表技术,为行为不再受对象控制的勇敢新世界了吗?可以在不参考其影响的状态的情况下对行为进行建模吗?
更新:
我正在尝试数据流图,看看它们是否更适合范式。到目前为止一切都很好,但我认为当我对结构的方法进行建模时,我会陷入困境,DFD 中的妥协是它们被视为函数。:(
Go 支持继承!!!啊啊啊!!!(头被吹得干干净净。)你可以组成一个由另一个结构组成的结构,它有方法,子结构现在继承......你明白了吗?我的心都快炸了。意味着 UML 是有效的……完全有效,但感觉很脏。
Go 不支持继承,只是看起来如此。:) DFD 就是这样!