在做了一些研究之后,我确认在大多数情况下,逐特征结构优于逐层结构。为了获得一些论点,我们可以阅读以下文章甚至这个答案。
包通过的功能,没有层
功能文件夹在VS技术文件夹
的功能包,没有层
的层为Spring项目已过时套餐
但是,我发现的所有 DDD 项目示例都是使用package-by-layer 制作的,大部分时间都遵循如下结构:
???申请
???配置
???域
???基础设施
???接口
所以我的问题是:为什么 DDD 社区即使在大多数情况下明显优越,也不遵循按功能打包的功能?
我们是否应该使用package-by-feature在 DDD 中吗?如果是这样,该怎么做?
我提到我不是在谈论微服务架构的特殊情况,其中显然逐层包更相关。
假设我们有以下目录结构,我们假设my-packagePackagist上也存在:
- apps
\_ my-app
\_ composer.json
- packages
\_ my-package
\_ composer.json
Run Code Online (Sandbox Code Playgroud)
要添加my/package为my-app的依赖项,文档说明我们可以使用以下配置:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package"
}
],
"require": {
"my/package": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我 composer update,依赖仍然从Packagist下载.所以,看,我禁用了Packagist.org:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package",
"packagist.org": false
}
],
"require": {
"my/package": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
我与清除缓存composer clearcache,删除my/package具有composer remove my/package与再次进行安装它composer require my/package --prefer-source(如果我没有理解--prefer-source仅用于VCS).下载的软件包仍然不是本地软件包.如何强迫作曲家使用本地作曲家?
现在托管在Github存储库中的DDDSample项目似乎是关于如何设计DDD项目的参考.
我注意到域类中的所有getter都不以get(ex :)为前缀,Cargo#delivery而它们在域包之外的类中加前缀(例如:) HandlingEventRegistrationAttempt#getTrackingId.
理查德·C·马丁在他的"清洁法典"一书中说:
应根据javabean标准为访问器,变换器和谓词命名其值,并以get,set为前缀.
那么,我们应该避免在这种背景下遵循他的建议吗?如果是这样,为什么它比一致性更重要?
默认情况下,该主题中行号的对比度非常低。我们如何修改行号的颜色?
architecture ×1
composer-php ×1
java ×1
oop ×1
php ×1
sublimetext ×1
sublimetext3 ×1
themes ×1