The Single Responsibility Principle means a class should only have one reason to change—basically, it should focus on a single responsibility. This makes the code easier to maintain, test, and extend.
Let’s say we are building a to-do application. And we are working on our Task
class, and we create something like this:
class Task {
constructor(title, priority) {
this.title = title;
this.priority = priority;
}
generateReport() {...}
log() {...}
}
This violates SRP because Task has extra responsibilities.
If we need to make changes in task creation, report generator, or logging, the
Task class would need to be modified, leading to tightly coupled code and
potential maintenance issues.
To follow SRP, we can reorganize our code like this:
class Task {
constructor(title, priority) {
this.title = title;
this.priority = priority;
}
}
class Report {
generateReport() {...}
}
class Logger {
log() {...}
}
Yes, we introduced new classes, but now everything has only one responsibility.
Task class is responsible for everything related to tasks, Report is
responsible for generating reports, and Logger is responsible for logging.
This looks like a small change, but trust me, it makes a huge difference in bigger projects. By keeping things separated, you’ll find it much easier to maintain and extend your code in the long run.
Find this post helpful? Subscribe and get notified when I post something new!