Bob大叔的干净架构方法——推荐的包结构是啥?

Posted

技术标签:

【中文标题】Bob大叔的干净架构方法——推荐的包结构是啥?【英文标题】:Uncle Bob's clean architecture approach - what is recommended package structure?Bob大叔的干净架构方法——推荐的包结构是什么? 【发布时间】:2018-04-03 17:04:58 【问题描述】:

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

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

我们来看看我的包结构:

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

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

阅读this publication 后,我开始担心我现在想知道我的包结构是否正确?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

如果你检查我的问题,我会在 UI 文件夹中执行此操作。你怎么看?除了在 UI 中,我不知道如何以不同的方式命名它们。所以 UI 层会尖叫。 我已经看到了。我至少看到了一些商业用语。那些应该塑造你的***结构。例如。文件夹或项目名称的开始。然后应该遵循 UI 或数据或演示者等层。有关更多详细信息,我推荐我的链接帖子 您如何看待像这样命名***包以尖叫干净的架构:+框架+接口适配器+应用程序业务规则+企业业务规则,然后我们可以扩展这些以查看类。跨度> 我在这里回答了你的问题softwareengineering.stackexchange.com/questions/366930/…【参考方案2】:

我建议你看看这个repository。您可以从问题部分的讨论中获得很多反馈。我会特别阅读这个discussion。

现在来回答你的问题。

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

【讨论】:

以上是关于Bob大叔的干净架构方法——推荐的包结构是啥?的主要内容,如果未能解决你的问题,请参考以下文章

干净的架构。主持人的工作是啥?

将 formGroup 传递给 mat-step 的最干净的方法是啥?

具有空对象模式的 DAO

干净的代码、干净的架构和干净的项目布局/项目结构

清洁代码,清洁架构和清洁项目布局/项目结构

这个静态结构的目的是啥?