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 the code of the BuckPal example application that was introduced in the preface. More specifically, we will look at the "Send Money" use case, with which a user can transfer money from their account to another.