SOLID

Short description: Object-oriented software engineering design principles

In software engineering, SOLID is a mnemonic acronym for five design principles intended to make object-oriented designs more understandable, flexible, and maintainable. The principles are a subset of many principles promoted by American software engineer and instructor Robert C. Martin,[1][2][3] first introduced in his 2000 paper Design Principles and Design Patterns discussing software rot.[2][4](pp2–3)

The SOLID ideas are

* The Single-responsibility principle: "There should never be more than one reason for a class to change."[5] In other words, every class should have only one responsibility.[6]
* The Open–closed principle: "Software entities ... should be open for extension, but closed for modification."[7]
* The Liskov substitution principle: "Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it."[8] See also design by contract.[8]
* The Interface segregation principle: "Clients should not be forced to depend upon interfaces that they do not use."[9][4]
* The Dependency inversion principle: "Depend upon abstractions, [not] concretes."[10][4]

The SOLID acronym was introduced later, around 2004, by Michael Feathers.[11]

Although the SOLID principles apply to any object-oriented design, they can also form a core philosophy for methodologies such as agile development or adaptive software development.[3]

## See also

* Code reuse
* GRASP (object-oriented design)
* Inheritance (object-oriented programming)
* List of software development philosophies
* Robert C. Martin

## References

1. ↑ Martin, Robert C.. "Principles Of OOD". http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod. . (Note the reference to "the first five principles", although the acronym is not used in this article.) Dates back to at least 2003.
2. ↑ 2.0 2.1 Martin, Robert C. (13 Feb 2009). "Getting a SOLID start". https://sites.google.com/site/unclebobconsultingllc/getting-a-solid-start.
3. ↑ 3.0 3.1 Metz, Sandi (May 2009). "SOLID Object-Oriented Design". https://www.youtube.com/watch?v=v-2yFMzxqwU. Talk given at the 2009 Gotham Ruby Conference.
4. ↑ 4.0 4.1 4.2 Martin, Robert C. (2000). "Design Principles and Design Patterns". http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf.
5. ↑ "Single Responsibility Principle". http://www.objectmentor.com/resources/articles/srp.pdf.
6. ↑ Martin, Robert C. (2003). Agile Software Development, Principles, Patterns, and Practices. Prentice Hall. p. 95. ISBN 978-0135974445. https://books.google.com/books?id=0HYhAQAAIAAJ.
7. ↑ "Open/Closed Principle". http://www.objectmentor.com/resources/articles/ocp.pdf.
8. ↑ 8.0 8.1 "Liskov Substitution Principle". objectmentor.com. http://www.objectmentor.com/resources/articles/lsp.pdf.
9. ↑ "Interface Segregation Principle". 1996. http://www.objectmentor.com/resources/articles/isp.pdf.
10. ↑ "Dependency Inversion Principle". objectmentor.com. http://www.objectmentor.com/resources/articles/dip.pdf.
11. ↑ Martin, Robert (2018). Clean Architecture: A Craftsman's Guide to Software Structure and Design. p. 58. ISBN 9780134494166. https://books.google.com/books?id=uGE1DwAAQBAJ&q=2004+or+thereabouts+by+Michael+Feathers.

## External links

* SOLID Design Principle

de:Prinzipien objektorientierten Designs#SOLID-Prinzipien

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/SOLID. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=SOLID&oldid=3375869"