Simply put, a module or class should have the following characteristics only:
- It should do one single thing and only have a single reason to change
- It should do its one single thing well
- The functionality provided needs to be entirely encapsulated by that class or module
What is meant when saying that a module must be responsible for a single thing? The Google definition of a module is:
From this, we can understand that a module is a simple building block. It can be used or reused to create something bigger and more complex when used with other modules. ...