代码之家  ›  专栏  ›  技术社区  ›  Lheonair

拥有一个共享的“实体”模块是个好主意吗?

  •  0
  • Lheonair  · 技术社区  · 2 年前

    使用Gradle,对于Android原生开发,当您修改模块中的代码并点击构建时,所述模块和所有依赖于所述模块的模块都会重新构建。这通常是有帮助的,但我发现自己创建了很多数据类并将它们映射到另一个完全相同的数据类。在某些情况下,这些映射是有意义的,例如,视图实体通常具有较少的数据,或转换字符串,当映射到需要更改的域模块时,firebase实体可能具有带firebase注释的字段,或者它可能具有新字段,或保存到数据库中的字段较少。但在其他一些情况下,通常在域和firebase服务层中,同一“业务实体”的这两个数据类是相同的。

    例如,表示模块将视图实体映射到域实体中,那么域模块可能必须将该实体映射到firebase模块内的firebase实体中,因为域模块不知道表示模块,并且firebase模块不知道域模块及其类。

    这是有效的,每当我需要更改firebase模块中的某些内容时,只会重建firebase和域模块。 但我有创建一个名为“实体”的共享实体模块的想法,这是我看到的一个非常常见的模式,但现在许多模块都依赖于这个新的“实体”模块。因此,每当我在这个模块中添加或修改轻量级数据类时,“实体”模块和所有其他依赖它的模块都会重新构建。例如,在我上面提到的例子中,它将是“实体”模块、firebase模块和域模块(加上应用程序中依赖它的任何其他模块)。 所以我的问题是:我应该继续创建轻量级数据类,并从一个模块解析到另一个模块(这似乎是我的正确选择),还是走这种共享实体-模块的路径?

    0 回复  |  直到 2 年前
        1
  •  0
  •   Lheonair    2 年前

    这在一周内只得到了17次浏览,但我会回答,以防有人经历同样的思考过程。

    我最终做的是一个共享域实体模块,带有功能子模块。

    例如

    Entity
     |
     |__featureA
     |
     |__featureB
    

    然后特征就这样分开了

    Features
     |
     |__FeatureA
        |
        |__domain
        |
        |__presentation
     |
     |__FeatureB
        |
        |__domain
        |
        |__presentation
    

    因此,现在,功能模块可以单独依赖于 :entity:featureX 每当我换一个班 :entity:featureA 只有 featureA 将重建。