> For the complete documentation index, see [llms.txt](https://gpcoder.gitbook.io/clean-code/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gpcoder.gitbook.io/clean-code/bonus.md).

# Bonus

- [SOLID Principle](https://gpcoder.gitbook.io/clean-code/bonus/solid-principle.md)
- [SRP - Single Responsibility Principle](https://gpcoder.gitbook.io/clean-code/bonus/solid-principle/srp-single-responsibility-principle.md): A class should have one and only one reason to change, meaning that a class should have only one job.
- [OCP - Open-Closed Principle](https://gpcoder.gitbook.io/clean-code/bonus/solid-principle/ocp-open-closed-principle.md): Objects or entities should be open for extension, but closed for modification.
- [LSP - Liskov Substitution Principle](https://gpcoder.gitbook.io/clean-code/bonus/solid-principle/lsp-liskov-substitution-principle.md): Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
- [ISP - Interface Segregation Principle](https://gpcoder.gitbook.io/clean-code/bonus/solid-principle/isp-interface-segregation-principle.md): Many client-specific interfaces are better than one general-purpose interface.
- [DIP - Dependency Inversion Principle](https://gpcoder.gitbook.io/clean-code/bonus/solid-principle/dip-dependency-inversion-principle.md): High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.
- [LoD Principle](https://gpcoder.gitbook.io/clean-code/bonus/lod-principle.md)
- [YAGNI Principle](https://gpcoder.gitbook.io/clean-code/bonus/yagni-principle.md): You aren't gonna need it
- [DRY Principle](https://gpcoder.gitbook.io/clean-code/bonus/dry-principle.md): Don't Repeat Yourself Principle
- [Fail Fast principle](https://gpcoder.gitbook.io/clean-code/bonus/fail-fast-principle.md): When a problem occurs, it fails immediately and visibly.
- [Hollywood Principle](https://gpcoder.gitbook.io/clean-code/bonus/hollywood-principle.md): Don't Call Us, We'll Call You.
- [Library vs Framework](https://gpcoder.gitbook.io/clean-code/bonus/library-vs-framework.md)
- [Coupling and Cohesion](https://gpcoder.gitbook.io/clean-code/bonus/coupling-and-cohesion.md): The primary OO goals are loose coupling and high cohesion. The key to creating maintainable code is adhering to loose coupling, high cohesion.
- [AOP - Aspect-Oriented Programming](https://gpcoder.gitbook.io/clean-code/bonus/aop-aspect-oriented-programming.md)
- [Building an AOP framework](https://gpcoder.gitbook.io/clean-code/bonus/aop-aspect-oriented-programming/building-an-aop-framework.md)
- [OOP Design Pattern](https://gpcoder.gitbook.io/clean-code/bonus/oop-design-pattern.md)
- [Technical Dept](https://gpcoder.gitbook.io/clean-code/bonus/technical-dept.md): Technical debt management requires a balance between quality and speed. Technical debt needs to be understood, used and managed from a long-term perspective.
- [How to learn software Design and Architecture - Roadmap](https://gpcoder.gitbook.io/clean-code/bonus/how-to-learn-software-design-and-architecture-roadmap.md): The Full-stack Software Design & Architecture Map
- [Microservcies](https://gpcoder.gitbook.io/clean-code/bonus/microservcies.md)
- [Defining the scope of a microservice](https://gpcoder.gitbook.io/clean-code/bonus/microservcies/defining-the-scope-of-a-microservice.md)
- [Step-by-Step: How to Identify Over-Scoped Microservices](https://gpcoder.gitbook.io/clean-code/bonus/microservcies/step-by-step-how-to-identify-over-scoped-microservices.md)
- [Benefits of Grouping or Consolidating Microservices](https://gpcoder.gitbook.io/clean-code/bonus/microservcies/benefits-of-grouping-or-consolidating-microservices.md)
- [A practical step-by-step plan to consolidate microservice](https://gpcoder.gitbook.io/clean-code/bonus/microservcies/a-practical-step-by-step-plan-to-consolidate-microservice.md)
