层应该在代码结构中可视化吗?

Should layers be visualized in the code structure?

读完 Uncle Bob 的 Clean Architecture 之后,我一直在思考尖叫架构的概念和关于组织代码的最后一章。

我通常喜欢使用结构中存在的层来轻松地将代码放置在正确的层中,但我也看到了按功能划分的好处。

我最近开始做的一个大项目根本没有呈现层结构,您必须查看架构文档才能了解 java 包位于哪一层。该项目使用 OSGI 包。

该项目由大量开发人员成功完成,似乎运行良好,但我不禁感到结构混乱且难以使用,并且在创建新功能时需要架构师参与以确保遵守各层。

我的问题是这是否常见,不以某种方式包含层结构的原因是什么?

例如,做这样的事情似乎是一个干净的解决方案。 https://blog.ttulka.com/package-by-component-with-clean-modules-in-java

My question is if this is common and what the reason would be to not include the layer structure in some way?

问题是“代码的结构对你有什么好处吗?”这取决于您使用的编程语言。

例如,

在 Java 中,您有访问修饰符 publicprotectedprivate 和默认值(无修饰符)。默认和 protected 允许在同一个包内访问。 protected 还允许在其他地方扩展 classes 进行访问。这意味着如果您使用此修饰符,您可以控制 classes、方法和字段的可见性。

控制对 classes 和 class 成员的访问可以让您的生活更轻松。我经常看到 public 修饰符被广泛使用。这会导致一些问题:

  1. 开发人员经常在 class 之间引入从未有意的依赖关系,但引入它们是因为您可以做到。
  2. 如果一切都public IDE 不能很好地支持你。开发人员通常使用某种自动完成功能,或者在编写代码时使用类型搜索。如果一切都是 public,那么一切都可以从任何地方访问。由于 IDE 会列出所有可访问的选项,因此它会显示一长串条目。因此 public 并没有让生活更轻松。令人难过但确实如此,开发人员经常引入更多的包来组织代码,因此认为他们使代码变得更好而使事情变得更糟。

清洁架构书中“缺失的一章”一章的作者西蒙布朗说:

The access modifiers in Java are not perfect, but ignoring them is just asking for trouble. The way Java types are placed into packaged can actually make a huge difference to how accessible (or inaccessible) those types can be when Java's access modifiers are applied appropriately. If I bring packages back and mark (by graphically fading) those types where the access modifier can be made more restrictive, the picture becomes pretty interresting.

图表取自干净的体系结构书,章节“缺失的章节”,第 318 页。

现在您可以看到包装类型之间的差异了。如果一切都是 public 他们实际上都是平等的。

可在此处找到更多信息: