The principles are crucial to keeping system design efficient and scalable. Programmers use it to avoid design smells and come up with best designs when developing new features.
It states that a class must perform only one function to simplify code and maintenance. With fewer dependencies between functionalities, it's easier to add new features.
It states that classes should be open to extension but closed to modification. Code should be devised in a way that allows you to add new features without modifying existing code.
It states that classes should rely on abstract classes/interfaces rather than concrete types. Abstraction between high-level and low-level classes will allow us to decouple them.