
The purpose of this blog is to educate the reader about the different design principles/ideas that are used by the Software Engineering community to make better design choices and have cleaner codebases.
Four out of the ten principles discussed in this blog are part of the S.O.L.I.D (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion) principles. The Software Engineering community started implementing the S.O.L.I.D principles in their design choices and code after Bob Martin’s 2000 paper, “Design Principles and Design Patterns”. Martin wrote the paper urging the community to start using these principles to help make better design choices and have cleaner code. Martin’s reasoning behind suggesting such was, that by using S.O.L.I.D principles in their design choices and code, the Software Engineering community would not have to pay the price at a later date with having to correct their designing mistakes.
Five out of the ten principles discussed in this blog are part of the G.R.A.S.P (General Responsibility Assignment Software Patterns) principles. The principles are Low coupling/High cohesion, Information expert, Polymorphism, and Pure fabrication. They are used in conjunction with the S.O.L.I.D principles to help the end product.
The last principle that I will be discussing was introduced to the Software Engineering community by Ian Holland towards the end of 1987. Holland introduced the community to the Law of Demeter principle.
Outlined below is a listing of the principles/ideas that I will be talking about on this blog.
• Low Coupling/High Cohesion and information Expert
• Controller and polymorphism
• Pure-fabrication and Single Responsibility Principle
• Dependency Inversion and Open/Closed Principle
• Liskov Substitution Principle and Law of Demeter Principle
Footnote:
Link to Bob Martin 2000 paper.
Link to source for the image.