DDD - 什么是适当的代码结构

4
我正在致力于改善旧项目的结构,希望您能为我翻译如何组织代码结构的问题。我看到有两个选项:

#1 按业务领域/层次划分

app/
----accout/
--------application/
--------domain/
--------infrastructure/
----client/
--------application/
--------domain/
--------infrastructure/
----transfer/
--------application/
--------domain/
--------infrastructure/

或者第二层/业务域
app/
----application/
--------account/
--------client/
--------transfer/
----domain/
--------account/
--------client/
--------transfer/
----infrastructure/
--------account/
--------client/
--------transfer/

哪种方法更适合传统项目?从你的经验来看,哪种更可取?

从我的角度来看,#1将在进一步重构期间使系统解耦。另一方面,#1似乎更容易实现传统项目。


当你谈到目录结构时,DDD如何涉及其中? - kayess
1
那么,在您的DDD项目中,您如何组织代码结构?我猜您不想将所有构建块放在一个包中。 - slawekpl
2
目前你的问题比较主观,不确定是否会对未来的访问者有所帮助,因为我所有的项目结构都是不同的。基本的区别在于每个项目都由不同的业务用例驱动,这些用例是代码中的解决方案空间,因此我尝试根据受子域和有界上下文力量驱动的普遍语言进行组织。我无法提供好的建议和“最佳实践”,因为这些并不存在。只要符合您和您的团队的规范,以帮助开发周期尽可能快速和有效地进行即可。 - kayess
我没有看到任何与接口相关的内容。接口对于解耦组件非常重要。 - L-Four
1个回答

5
根据书籍 PHP设计模式,您可以创建模块,这种情况下它会像这样:
└──src
   ├── Application
   ├── Domain
   │   └── Model
   │       ├ Account
   │       ├ Client
   │       └ Transfer
   └── Infrastructure

但是,如果您考虑在未来创建微服务(在项目非常庞大的情况下),您可以遵循选项#1,因为将它们拆分为单独的项目会更容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接