The old stuff has stood the test of time, so it's probably been useful somewhere. And if it's been used, it's also been criticized; so you can learn from that too.
Even if the old concept is fatally flawed, they are part of the lexicon and of the computer science knowledge base. Someone might refer to these concepts in describing a new concept. So, being unaware of the past may make it harder to keep up with the future.
S - Single responsibility.
O - Open / Closed Principle
Write code that is open for extension, but closed from modification. When you are adding features, you want to write new code, and not have to modify old stuff.L - Liskov Substitution Principle
I don't like the name of this principle. 'Liskov' doesn't mean anything to me. It really should be called the 'Substitution principle'. Anyway ...Wherever you using a base class, you should be able to substitute a derived class. Make sure your derived class D "IS-A" subtype of base class B. Because your public interface will depend on virtual methods, make sure your derived class D behaves like a base class B, except
I - Interface segregation Principle
It's better to set up lots of client specific interfaces than just a few general interfaces. Fat interfaces will have lots of unintended dependencies.D - Dependency Inversion Principle
The name of this principle is confusing too. It sounds like I should should invert or reverse the direction in which modules depend on one another. But what if I had the dependency relationships correct in the first place?In any case, I think the point of this principle is that all concrete classes should depend on abstract ones. Say you have some object and you want to save its data to a database. You should have the object depend on some abstract database writer. When you want to change the way you write to a database, you can modify the database writer and not have to modify the object.