Bob 大叔的干净架构方法 - 推荐的包结构是什么?

Uncle Bob's clean architecture approach - what is recommended package structure?

我想知道我是否以正确的方式使用干净的架构。我试图像这样放置它:

我读到包结构应该按用例排列,但我很难理解如何做到这一点。

让我们看看我的包结构:

请注意,我不知道将活动真正放在 UI 文件夹中的什么位置,你能推荐一下吗?有关系吗?

在数据文件夹中,我有我用于 repository design pattern. 的存储库 我的改造网络调用与 UI 文件夹处于同一级别。我的依赖注入框架也是如此。

阅读后我的担忧来了this publication我现在想知道我的包结构是否正确?

我建议你看看这个 repository. You can have a lot of feedback from the discussions in the issues section. I'll would read specially this discussion

现在来回答你的问题。

  • 重要吗?我会说不,没关系。包结构只是构建代码以使其更具可读性和可维护性的一种便捷方式。只要您尊重 Clean-Architecture 原则,您的 classes 在哪里并不重要。请记住,在您取得进展并且您的项目正在增长时,您始终可以进行重构。
  • 活动放在哪里?如果您已经将 UI 包分成组件,您应该坚持下去并拥有一个活动文件夹。
  • 建议:首先,我喜欢为每一层(例如数据、域、表示、基础设施...)准备一个包或一个模块,然后在每个包中您可以根据自己的喜好做出自己的决定。例如,我喜欢将表示层分成功能,而将域和数据层按组件分开。每一层都有一个模块的好处是,如果新开发人员要为项目做出贡献,您可以强制执行干净的架构原则,因为他们将无法在域用例中引用数据 class。

Bob 大叔强调的一个方面是干净的架构正在尖叫。这意味着顶级结构和名称应该表达您的业务领域,而不是您使用的技术细节和框架。在第二层我们应该把不同的圈子分开。

在电子商务应用程序中,诸如购物车、搜索和产品目录之类的东西会塑造顶级结构。用例、控制器和演示者将在第二层。

我已经在博客上写了关于这个的更详细的例子 https://plainionist.github.io/Implementing-Clean-Architecture-Scream/