应用程序架构在实践中 - 鲍勃叔叔

时间:2012-04-08 09:50:17

标签: architecture software-design

根据Bob叔叔/ source /,每个用户故事都应该分开“积分器/控制器”。它听起来不错,因为课程很小,只做一件事。

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

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

或者我对Bob叔叔的误解?但如果没有,有人看到这种外观有组织的建筑吗?它在现实世界中的实用性?

此致

2 个答案:

答案 0 :(得分:2)

它当然是实用的,是大型复杂系统的优秀载体。我在顶级目录中放置了实体/边界/交互者(控制器的实例,以避免与流行的Web界面混淆),并在子目录中放置整个通信系统(例如z_rails,z_sinatra等)。例如,使用Rack,使用各种通信框架以最少的额外工作提供Web解决方案非常简单。例如,请查看github.com/wizardwerdna/avdi和github.com/wizardwerdna/bobbit,了解这些行的初步实验。

答案 1 :(得分:1)

你是对的,这就是他希望项目看起来像这样的方式。

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

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

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

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

我还想提一件事,我想你可能会感兴趣。 在最后的this interview中,他揭示了他的下一本书将是关于我们现在正在讨论的这种新方法的全部内容。

<强>更新

我在评论中看到你正在谈论调用包含Boundaries,Interactors等名称的包

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