Chapter 1 It's all about managing complexity

What does it mean to write simple object-oriented design?

Chapter 2 Making code small

Learn how to break large units of code into smaller pieces, move new complexity away from existing code, and write good documentation.

Chapter 3 Keeping objects consistent

We have to keep objects consistent, and implement effective validation mechanisms that ensure consistency at all times.

Chapter 4 Managing dependencies

It's all about reducing the impact of coupling, understanding dependency directions, and increasing flexibility with dependency injection.

Chapter 5 Designing good abstractions

Understand what abstractions are, what constitutes a good abstraction, and how to keep them simple.

Chapter 6 Handling external dependencies and infrastructure

Decouple your infrastructure from your domain code, how to evolve infrastructure without having a large impact.

Chapter 7 Achieving modularization

Learn how to design modules that provide complex features through simple interfaces, how to reduce the dependency among modules.

Chapter 8 Being pragmatic

We end up talking about how to be pragmatic, why we should never stop refactoring and learning more about object-oriented design.

Subscribe to our mailing list

Receive free articles about software quality in your e-mail!

About the author

Maurício Aniche

Dr. Maurício Aniche's life mission is to help software engineers to become better and more productive. Maurício is a Tech Lead at Adyen, where he heads the Tech Academy team and leads different engineering enablement initiatives. Maurício is also an assistant professor of software engineering at Delft University of Technology in the Netherlands. His teaching efforts in software testing gave him the Computer Science Teacher of the Year 2021 award and the TU Delft Education Fellowship, a prestigious fellowship given to innovative lecturers. He is the author of the "Effective Software Testing: A Developers Guide", published by Manning in 2022.

  • PhD in software engineering
  • Years of experience in software design
  • TU Delft education fellow and Teacher of the Year

Reach me on Twitter or Linkedin

Frequently Asked Questions

The examples in this book are written in a pseudo-language that resembles Java. Nevertheless, they are easy to be read by anyone that works on an object-oriented programming language.
Simple Object-Oriented Design is a book meant for software developers that want to sharpen their object-oriented design skills. We'll deeply discuss code complexity, consistency and encapsulation, dependency management, designing abstractions, handling infrastructure, and modularization. If you are an advanced developer that already knows similar approaches, such as Clean Architecture, you'll still benefit from the different perspective that this book brings.
You can buy this book by clicking in the "buy" buttons you see in this page. This button will redirect you to the Manning page (the publisher of my book), but using a special link that makes me get a little bit more from the sell. Thanks for supporting me!
Yes! Subscribe to my newsletter!