- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找有关应用程序特定目录结构的反馈。我意识到这不遵循经典的堆栈溢出格式,其中存在诸如“正确答案”之类的东西,尽管我认为它仍然很有趣。要提供有意义的反馈,首先需要了解一些上下文,所以请多多包涵。
--
我和我的两个同事创建了一个使用 Clean Architecture 的应用程序.对路由的 HTTP 请求被转化为请求模型,该模型被传递给用例,然后它吐出一个响应模型,该模型被传递给演示者。
代码是完全开源的,可以查到on GitHub .我们还有some docs描述主要目录的内容。
我们正在考虑重新组织我们的代码,并希望就我们目前所做的工作获得反馈。此次重组的主要原因包括:
现在我们没有合适的地方来放置不属于我们域的东西,但以某种方式绑定(bind)到它。例如授权代码,它知道捐赠 ID(授权不是核心域的一部分,而捐赠 ID 是)。
将有凝聚力的事物组合在一起是件好事。我们的捐赠代码是内聚的,我们的成员(member)申请代码是内聚的,而两者并不相互依赖。这与领域驱动设计中的限界上下文概念密切相关。目前,这些上下文在我们的代码中并未明确可见,因此很容易使它们相互依赖,尤其是当您不熟悉领域时。
这些是我们目前已经确定的上下文。这是一个初步列表,只是为了给你一个想法,而不是我想要反馈的部分。
我想要反馈的部分是我们考虑切换到的目录结构:
src/
Context_1/
DataAccess/
Domain/
Model/
Repositories/
UseCases/
Validation/
Presentation/
Authorization/
Context_2/
Factories/
Infrastructure/
tests/
Context_1/
Unit/
Integration/
EdgeToEdge/
System/
TestDoubles/
Context_2/
直接位于上下文中的 Authorization/
文件夹将为我们目前在基础设施中奇怪放置的授权代码提供一个家。其他代码不属于我们的领域,但绑定(bind)到它,可以直接进入上下文文件夹,如果其中有一堆内聚/相关的东西,比如授权,就可以得到它自己的文件夹。
我很乐意提供您提供有用反馈所需的额外信息。
最佳答案
Right now we do not have a nice place to put things that are not part of our domain, yet somehow bind to it.
Right now these contexts are not explicitly visible in our code, so it is easy to make them dependent on each other, especially when you are not familiar with the domain.
有技术和非技术的方法来解决这个问题:
我一直在使用 Hexagonal Architecture使用 DDD,其中域位于中间。存储库等其他问题由接口(interface)表示。然后,您的适配器引用域,但绝不会在其他方向。因此,您的域中可能有一个 IRepository,但您的 WhateverDatabaseRepository 位于它自己的项目中。然后应用程序服务/命令处理程序负责协调您的用例并加载适配器。这也是您应用横切关注点(例如授权)的地方。
我建议观看 Greg Young 视频(尝试 this one )并阅读 Vaughn Vernon's IDDD因为它涉及如何构建应用程序并处理像您这样的问题。 (抱歉,我的回答基本上是看一个 6 小时的视频和读一本 600 多页的书,但它们确实帮助我澄清了 DDD 的一些更“模糊”的方面)
例如,参见 https://github.com/gregoryyoung/m-r/blob/master/SimpleCQRS/CommandHandlers.cs
关于namespaces - 在目录结构中明确上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013947/
我在 linux 上工作。我对windows没有太多想法。 windows中文件的权限是如何组织的?我们在unix中是否有像chmod这样的api来更改权限? 最佳答案 对于 Windows,有一个名
应用程序编程接口(interface) (API) 是一组用于访问基于 Web 的软件应用程序的编程指令和标准。 如果出现 ,有人可以向我解释一下吗?谷歌地图 或 优酷 这是API哪个是softwar
我有两个应用程序,A 和 B,它们使用 android 库 C。B 有一个服务 A 想通过 C 使用,例如 在我的库中有一个类试图将它绑定(bind)到服务,
我正在正常或安全模式下启动相机应用程序,具体取决于使用我的应用程序执行的手势,但一旦用户选择应用程序并点击始终,则没有选项可以更改默认值,即使是从 Android 的设置菜单中也是如此. camera
我有一个数据集,本质上是一个稀疏二进制矩阵,表示两个集合的元素之间的关系。例如,让第一组是人(用他们的名字表示),例如像这样的东西: people = set(['john','jane','mike
何为pythonic? pythonic如果翻译成中文的话就是很python。很+名词结构的用法在中国不少,比如:很娘,很国足,很CCTV等等。 我的理解为,很+名词表达了一种特殊和强调的意味。
某些 Prolog 目标的确定性成功问题已经一次又一次地出现在 - 至少 - 以下问题: Reification of term equality/inequality Intersection an
我指的是 DateTime.TryParse(string s, out DateTime result) 重载,它尝试从字符串中解析 DateTime - 没有特定的格式正在指定。 我可以从http
2020 年 04 月 10 日,《中共中央国务院关于构建更加完善的要素市场化配置体制机制的意见》正式公布,将数据确立为五大生产要素(土地、资本、劳动力以及技术)之
有人可以解释一下 NSNotification 的 addObserver 函数中 notificationSender 的用途吗? 这是 Apple 文档的解释: notificationSende
我是一名优秀的程序员,十分优秀!