You know beautiful code when you see it. But what about lots and lots of beautiful code; is it still beautiful at a distance? “Structure” is how all the snippets of code are recursively organised into containers (methods, classes, packages, namespaces, folders, jars, projects, etc.) and how the resulting containers relate to each other due to the dependencies that emerge from the code. The same code can be organised one way into a hopelessly tangled mess, or another way … into a Beautiful Structure.
This talk explores how “locality of relationship” affects coupling, cohesion, and the width of interfaces. It shows how some structural patterns dramatically increase complexity, and how alternative patterns can massively decouple and simplify. The structure of open-source Java projects (such as the beautifully-structured Spring framework) is used to illustrate the principles.
9. • Map for developers
• Phased testing and
release
• Divide work across
organizations, teams,
individuals
• Modularity: interfaces
+ info hiding
• Reuse or replace
subsystems or layers
• Impact/regression
control
• Help new developers
• …