实践中的应用程序架构 - Bob 大叔 [关闭]

Posted

技术标签:

【中文标题】实践中的应用程序架构 - Bob 大叔 [关闭]【英文标题】:Application Architecture in practice - Uncle Bob [closed] 【发布时间】:2012-04-21 03:49:24 【问题描述】:

根据鲍勃叔叔 /source/ 的说法,每个用户故事都应该有单独的“集成器/控制器”。听起来不错,因为班级很小并且只做一件事。

但在现实世界中,我没有看到以这种方式组织的建筑。如果有例如 AccountController,它总是包含与 Account 相关的所有方法。在鲍勃叔叔的“方式”中,这应该是这样设计的:

+Controllers
---+Account
------+DepositMoneyIntoAccount
------+WithdrawalMoneyFromAccount
------+TransferMoneyToAccount

或者我误解了鲍勃叔叔?但如果没有,你们中是否有人看到以这种方式组织的建筑?它在现实世界中实用吗?

问候

【问题讨论】:

你有参考鲍勃大叔的话吗? 您还可以查看此帖子以进行澄清并改进您的问题。 ***.com/questions/1866794/… @darlinton,一定要看看youtube.com/… 我们以这种方式组织了我们的项目。我们为我们的服务使用实体 - 绑定 - 控制模式,并且我们的每个交互器都实现了一个用例。这会导致一些开销,但这样我们就可以独立于边界甚至后端以及访问后端的逻辑来测试我们的业务逻辑。 @andih thx 回复,但你能告诉我你是否真的有名为“interactors”、“boundaries”等的目录吗? 【参考方案1】:

它当然是实用的,是大型复杂系统的绝佳工具。我将实体/边界/交互器(代替控制器以避免与流行的 Web 界面混淆)放在顶层目录中,并将整个通信系统放在子目录中(例如 z_rails、z_sinatra 等)。以 Rack 为例,使用各种通信框架交付 Web 解决方案非常简单,而且所需的额外工作最少。例如,查看 github.com/wizardwerdna/avdi 和 github.com/wizardwerdna/bobbit 以了解这些方面的初步实验。

【讨论】:

【参考方案2】:

你说得对,这就是他希望项目的样子。

记住他的演讲“Architecture: The lost years”,架构应该描述它的意图(还有什么比用例更好的呢?)。

一开始我也有点困惑,但如果我们考虑一下 BDD,其哲学就是要确保我们制作可理解的软件。

我看了几次视频,我可能会再看一次,因为它是一个新概念,需要学习。 对我来说,最重要且更具挑战性的部分是为其他模块创建插件,他谈到了保持前端和数据库等周围层完全独立于软件所需的请求和响应模型。

这样做的最终目标是我们的软件可以轻松替换任何插件,例如数据库或 UI。

我想再提一件事,我想你可能会感兴趣。 在结尾的this interview 中,他透露他的下一本书将全部介绍我们现在正在讨论的这种新方法。

更新

我在 cmets 中看到您正在谈论使用 Boundaries、Interactors 等名称调用包...

这完全没问题,在他的书clean code 中,一些开发人员在某些场合使用模式的名称来命名类或包......这是正确的,因为这是开发人员应该熟悉的技术术语。就像通过读取类的名称或包知道类是构建器或工厂一样,您可以知道交互器或边界是什么。 根据干净的代码,这是正确的。

【讨论】:

以上是关于实践中的应用程序架构 - Bob 大叔 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

测试驱动开发(TDD)实践与技巧

分布式事务架构实践

云原生架构-最佳实践-日志规约

程序员的职业素养

DBT - dbt 部署模型应属于的架构的最佳实践?

解决微服务架构下流量有损问题的实践和探索