Simple Object-Oriented Design, Video Edition

Video description

In Video Editions the narrator reads the book while the content, figures, code listings, diagrams, and text appear on the screen. Like an audiobook that you can also watch as a video.

Write object-oriented code that’s manageable, maintainable, and future-proof.

Keeping your object-oriented designs simple demands a creative approach—and that’s exactly what you’ll find in Simple Object-Oriented Design. This book is full of patterns and principles for reducing complexity, each one proven in author Mauricio Aniche’s 20-year career in software development. You’ll learn how to tackle code’s natural growth in complexity, and adopt a “good enough” approach that means it’s easy to refactor when requirements change.

You’ll discover insightful principles for:

  • Making code readable and documented
  • Improving consistency and encapsulation
  • Managing dependencies
  • Designing abstractions
  • Handling infrastructure
  • Effective modularization

Learn what constitutes both good and bad object-oriented software design, discover how to make better trade-offs in design decisions, and when to embrace complexity over simpler data structures. With this book as your vital reference, you’ll be ready to write code that will last the test of time, without slowing feature delivery to a crawl.

About the Technology
Even a simple object-oriented application can quickly become complex as it evolves. Each new class, method, or feature means more state and abstractions to manage, which in turn increases complexity, maintenance, and time spent detangling legacy code. It takes effort and skill to keep your codebase simple. This book shows you how.

About the Book
Simple Object-Oriented Design: Create clean, maintainable applications presents practical design principles you can use to keep an object-oriented codebase simple as it grows and changes. Written as a collection of practical techniques you can apply in any OO language, it offers tips for concise code, managing dependencies and modules, and designing flexible abstractions. Illuminating figures, real-world examples, and insightful exercises make each principle stick.

What's Inside
  • Writing simple, understandable classes
  • Flexible abstractions to extend your designs
  • Reducing the impact of coupling


About the Reader
Readers should be familiar with an object-oriented language like Java, C#, or Python.

About the Author
Maurício Aniche is a software engineer with 20 years of experience. He’s also an Assistant Professor in Software Engineering at Delft University of Technology, and the author of Effective Software Testing.

Quotes
Simple and effective. Highly recommended read!
- Davide Spadini, Meta

It is refreshing to find a book that tackles software quality in a straightforward and pragmatic manner. A must-read for any developer in the trenches.
- Hugo Marques, Netflix

Fantastic! Read and apply the incredibly important principles in this book.
- Michael Hilton, Carnegie Mellon University

Everything you need to know to keep code simple and clean. It will fascinate you how easy solutions can be if you have the correct mindset.
- Rafael Werner, ING

A balanced and pragmatic view based on evidence. I strongly recommend it!
- Paulo Afonso Parreira Junior, University of Minas Gerais

Table of contents

  1. Chapter 1. It’s all about managing complexity
  2. Chapter 1. Designing simple object-oriented systems
  3. Chapter 1. Simple design as a day-to-day activity
  4. Chapter 1. A short dive into the architecture of an information system
  5. Chapter 1. The example project: PeopleGrow!
  6. Chapter 1. Exercises
  7. Chapter 1. Summary
  8. Chapter 2. Making code small
  9. Chapter 2. Make code readable and documented
  10. Chapter 2. Move new complexity away from existing classes
  11. Chapter 2. Exercises
  12. Chapter 2. Summary
  13. Chapter 3. Keeping objects consistent
  14. Chapter 3. Design effective data validation mechanisms
  15. Chapter 3. Encapsulate state checks
  16. Chapter 3. Provide only getters and setters that matter
  17. Chapter 3. Model aggregates to ensure invariants in clusters of objects
  18. Chapter 3. Exercises
  19. Chapter 3. Summary
  20. Chapter 4. Managing dependencies
  21. Chapter 4. Avoid coupling to details or things you don’t need
  22. Chapter 4. Break down classes that depend on too many other classes
  23. Chapter 4. Inject dependencies, aka dependency injection
  24. Chapter 4. Exercises
  25. Chapter 4. Summary
  26. Chapter 5. Designing good abstractions
  27. Chapter 5. Generalize important business rules
  28. Chapter 5. Prefer simple abstractions
  29. Chapter 5. Exercises
  30. Chapter 5. Summary
  31. Chapter 6. Handling external dependencies and infrastructure
  32. Chapter 6. Use the infrastructure fully
  33. Chapter 6. Only depend on things you own
  34. Chapter 6. Encapsulate low-level infrastructure errors into high-level domain errors
  35. Chapter 6. Exercises
  36. Chapter 6. Summary
  37. Chapter 7. Achieving modularization
  38. Chapter 7. Design clear interfaces
  39. Chapter 7. No intimacy between modules
  40. Chapter 7. Exercises
  41. Chapter 7. Summary
  42. Chapter 8. Being pragmatic
  43. Chapter 8. Refactor aggressively but in small steps
  44. Chapter 8. Accept that your code won’t ever be perfect
  45. Chapter 8. Consider redesigns
  46. Chapter 8. You owe this to junior developers
  47. Chapter 8. References
  48. Chapter 8. Exercises
  49. Chapter 8. Summary

Product information

  • Title: Simple Object-Oriented Design, Video Edition
  • Author(s): Mauricio Aniche
  • Release date: May 2024
  • Publisher(s): Manning Publications
  • ISBN: None