python - 有没有办法为 groovy 或 python 等动态脚本语言规划和绘制架构图?

标签 python architecture groovy uml dynamic-languages

假设我想用 groovy 编写一个大型应用程序,并利用闭包、类别和其他概念(我经常使用这些概念来分离关注点)。有没有办法以简单的方式绘制或以其他方式传达其中一些东西的架构?例如,您如何详细说明(没有冗长的文档)闭包映射可能做的事情?我知道通常不建议大规模使用动态语言功能,因为它们被认为很复杂,但情况一定如此吗?

最佳答案

UML 不太适合处理此类事情,但如果您愿意做一些心理映射,您仍然可以使用它来传达您的设计。您可以在大多数动态概念和 UML 静态对象模型之间找到同构。

例如,您可以将闭包视为实现单一方法接口(interface)的对象。将此类接口(interface)建模为比 interface Callable { call(args[0..*]: Object) : Object } 更具体的东西可能很有用。

Duck typing 同样可以作为一个界面。如果您有一个方法接受可以发出嘎嘎声的东西,请将其建模为接受接口(interface) _interface Quackable { quack() } 的特化对象。

您可以将您的想象力用于其他概念。请记住,设计图的目的是交流想法。因此,不要对 100% 对所有内容建模过于迂腐,想想你想让你的图表表达什么,确保它们表达了这一点,并消除任何会淡化信息的无关细节。如果您使用了一些对您的目标受众来说不是很明显的概念,请解释它们。

此外,如果 UML 确实无法处理您想表达的内容,请尝试其他方式来可视化您的信息。 UML 只是一个不错的选择,因为它为您提供了一个通用词汇表,因此您不必解释图表上的每个概念。

关于python - 有没有办法为 groovy 或 python 等动态脚本语言规划和绘制架构图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102134/

相关文章:

python - tf.metrics.accuracy 与实际准确度不匹配

python - Python 中的 Xpath 生成器

python - 为像 numpy 这样的库创建 Python Wheels

testing - Geb(自动化测试框架)是一个好的验收测试框架吗?

java - 构建 java 项目时 build.gradle 中的 Groovy 语法

python - 无法将谷歌云打印作为守护进程运行

android - 干净架构表示、领域和数据模块中模型类的命名约定

c# - 允许服务之间的通信?

c++ - 我能保证所有指针都具有相同的字节大小吗?

grails - Groovy/Grails工具套件中的Web应用程序重新加载问题