Wouldn't it be nice to recognize an architecture just by looking at the code?
In this chapter, we will examine different ways of organizing code and introduce an expressive package structure that directly reflects a hexagonal architecture.
In greenfield software projects, the first thing we try to get right is the package structure. We set up a nice-looking structure that we intend to use for the rest of the project. Then, during the project, things become hectic and we realize that in many places the package structure is just a nice-looking facade for an unstructured mess of code. Classes in one package import classes from other packages that should not be imported.
We will discuss different options for structuring ...