作为业余爱好和最佳实践练习,我在Python和C#中实现相同的域模型(一个简单的GPS / GIS库,受ISO 191xx标准和OGC抽象模型启发)。
首先,我考虑过:"好吧,ISO / OGC给了我一个完整的UML,所以我将使用C#和Python中的每个类具有相同的签名"。
我很快发现自己被困在"严格/静态vs鸭子打字"问题,因为我不能指望python中的方法签名。例如:
*args **kwargs
和条件; @property
或property()
非常简单。实际上(显然)有一种明显且非常好的文明记录与#34;在一种语言和另一种语言之间,我希望尊重这些差异,同时最终得到同样的"同样的"应用程序,即等效域模型,体系结构和功能。
所以我的问题基本上是:
如果我要在Python和C#中实现相同的抽象模型(&#34;类似于UML&#34;),我应该如何进行,具体而言,哪些结构应该是不变的,哪些应该是不同的?< / p>
答案 0 :(得分:1)
MDA中所谓的“抽象模型”称为平台无关模型(PIM),它在C#和/或Python中的实现称为平台特定模型(PSM)。假设存在从PIM到PSM的转换/代码生成器,因此根据这些代码生成的工作方式,您将获得适当的C#和Python源代码。通常,这些工具提供了一些控制生成代码的方法。这种控制通常通过PIM注释来完成,这些注释特定于您正在生成的PSM。希望这会有所帮助。