English | 2020 | 377 Pages | PDF, EPUB | 34 MB
Learn to write testable, flexible, maintainable code
Ever felt like your code gets worse instead of better over time? This handbook teaches professional software developers the essential software design and architecture best practices they didn’t teach you in school.
What will you learn?
Everyone raves about writing clean code, but learning how to write code humans love to work with isn’t straightforward. In this chapter, you’ll learn how to write brain-friendly code using human-centered design principles. We also cover coding conventions professional developers use in their everyday work like writing useful comments, organizing & naming things, testing, refactoring, error handling, and so much more.
Object-Oriented Programming & Domain Modeling
Ever wondered where to put your business logic? In this chapter, we learn how to use OOP properly to tackle apps of any complexity. We revisit and relearn object-oriented programming; this time, with the sole purpose of using it to create rich domain models that encode and encapsulate complex business rules by structuring it away from frameworks, dependencies, tools & ORMs like Express.js and Sequelize.
Design principles are like guardrails for well-crafted code. They help you identify what makes code great, as well as what causes code to devolve into not-so-greatness… Prevent unmaintainable code by learning how to apply essential software design principles. You’ll be able to identify poor design and apply patterns to refactor towards a better one.
Do you find yourself changing features in one part of your app only to break a feature in another?
To accomodate change, prevent expensive refactorings, and keep code modular, testable and flexible, we learn how to use Conway’s Law to identify boundaries, enforce em’, and package them as well-defined components.
How to Build a Real-World App with Domain-Driven Design
Sometimes CRUD and Model-View-Controller just isn’t enough. Domain-Driven Design is an approach to software development that helps you translate complex problem domains into rich, expressive, and evolvable software.
You’ll learn the main ideas behind Domain-Driven Design, how companies scale codebases from monoliths to microservices, and how to design and develop a real-world Forum application was designed using DDD.