在Python和C中实现相同的域模型#什么应该相同,什么应该不同?

2024-05-20 02:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一个爱好和最佳实践练习,我将用Python和C实现相同的领域模型(一个简单的GPS/GIS库,灵感来自iso191xx标准和OGC抽象模型)。你知道吗

首先,我想:“好吧,ISO/OGC给了我一个完整的UML,所以我会让C和Python中的每个类都有相同的签名”。你知道吗

我很快发现自己陷入了“严格/静态vs duck类型”的问题中,因为我不能指望python中的方法签名。例如:

  • 重载构造函数在C#中非常常见和自然,但在Python中必须使用*args **kwargs和条件
  • 在C#中鼓励使用属性,但是我在Python中看到的大多数源代码都倾向于直接设置字段,尽管@propertyproperty()的使用非常简单。你知道吗
  • (以此类推)。你知道吗

事实上(很明显)一种语言和另一种语言之间有一个明显的、有很好记录的“思维方式的差异”,我想尊重这些差异,同时最终得到“相同”的应用程序,即等效的领域模型、体系结构和功能。你知道吗

所以我的问题基本上是:

If I am to implement the same abstract model ("UML-like") in Python and C#, how should I proceed, and specifically, which constructs should be invariant, and which should be different?


Tags: and模型ogc语言which标准property差异
1条回答
网友
1楼 · 发布于 2024-05-20 02:31:38

您在MDA中所称的“抽象模型”被称为平台无关模型(PIM),而它在C和/或Python中的实现被称为平台特定模型(PSM)。假设存在从PIM到PSM的转换/代码生成器,因此根据这些代码生成的工作方式,您将获得适当的C#和Python源代码。通常,这些工具提供了一些方法来控制生成的代码。这种控制通常是通过PIM注释来完成的,这些注释是特定于您正在生成的PSM的。希望这有帮助。你知道吗

相关问题 更多 >