> 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gpcoder.gitbook.io/clean-code/bonus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
