SRP
E811518
SRP is a core object-oriented design principle stating that a class or module should have only one reason to change, promoting cohesion and maintainability.
Statements (47)
| Predicate | Object |
|---|---|
| instanceOf | object-oriented design principle ⓘ |
| abbreviationOf | Single Responsibility Principle NERFINISHED ⓘ |
| aimsTo |
improve maintainability
ⓘ
improve readability ⓘ improve testability ⓘ promote high cohesion ⓘ reduce complexity ⓘ reduce coupling ⓘ simplify code changes ⓘ |
| alsoKnownAs | single reason to change principle ⓘ |
| appliesTo |
classes
ⓘ
components ⓘ functions ⓘ microservices ⓘ modules ⓘ services ⓘ |
| benefit |
better alignment with business rules
ⓘ
clearer responsibilities ⓘ easier refactoring ⓘ more focused interfaces ⓘ reduced side effects of changes ⓘ |
| clarifies | who the primary stakeholder of a class is ⓘ |
| coreConcept |
each software unit should have one responsibility
ⓘ
responsibilities that change for different reasons should be separated ⓘ |
| documentedIn | Agile Software Development, Principles, Patterns, and Practices NERFINISHED ⓘ |
| encourages |
designing classes around a single responsibility
ⓘ
splitting classes by reason to change ⓘ |
| fullName | Single Responsibility Principle NERFINISHED ⓘ |
| helpsWith |
avoiding god objects
ⓘ
avoiding large monolithic classes ⓘ encapsulation of responsibilities ⓘ separation of concerns ⓘ |
| introducedBy | Robert C. Martin NERFINISHED ⓘ |
| isFirstPrincipleOf | SOLID NERFINISHED ⓘ |
| originatedIn | object-oriented design literature ⓘ |
| partOf | SOLID ⓘ |
| popularizedIn | Agile software development community ⓘ |
| relatedTo |
cohesion
ⓘ
coupling ⓘ modularity ⓘ |
| states | a class or module should have only one reason to change ⓘ |
| usedIn |
clean architecture
ⓘ
domain-driven design ⓘ enterprise application design ⓘ object-oriented programming ⓘ |
| violationExample |
class handling business logic and persistence together
ⓘ
class responsible for UI, validation, and data access ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.