Software Design principles
Intro Any architectect and software developer should be aware of and follow best practeces established by many generations of software developers. This article is a recap of the best practices and the most important ones for software developers. Whenever you came to interview with me - you should definitely read this article and know by heart many of the principles. Design principles A brief overview over common design principles SOLID Single Responsibility Principle (SRP): A class should only have a single responsibility, that is, only changes to one part of the software’s specification should be able to affect the specification of the class. Open/Closed Principle (OCP): “Software entities … should be open for extension, but closed for modification.” Liskov Substitution Principle (LSP): “Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.” Interface Segregation Principle (ISP): “Many client-specific interfaces are better than one general-purpose interface.” Dependency Inversion Principle (DIP): One should “depend upon abstractions, [not] concretions.” DRY (Don’t Repeat Yourself) “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system” ...