<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=SOLID_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29</id>
	<title>SOLID (программирование) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=SOLID_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=SOLID_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)&amp;action=history"/>
	<updated>2026-05-05T14:32:46Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=SOLID_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)&amp;diff=13078&amp;oldid=prev</id>
		<title>Dzmuh: Новая страница: «{{другие значения термина|solid|Solid}} '''SOLID''' (сокр. от {{l6e|i=1|en|'''single responsibility''', '''open–closed''', '''Liskov substitution''', '''interface segregation'''}} и {{lang|en|'''dependency inversion'''}}) в программировании — мнемонический акроним, введённый Майклом Фэзерсом ({{lang-en2|Michael Feathers}}) для перв...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=SOLID_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)&amp;diff=13078&amp;oldid=prev"/>
		<updated>2023-06-11T00:10:34Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{другие значения термина|solid|Solid}} &amp;#039;&amp;#039;&amp;#039;SOLID&amp;#039;&amp;#039;&amp;#039; (сокр. от {{l6e|i=1|en|&amp;#039;&amp;#039;&amp;#039;single responsibility&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;open–closed&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Liskov substitution&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;interface segregation&amp;#039;&amp;#039;&amp;#039;}} и {{lang|en|&amp;#039;&amp;#039;&amp;#039;dependency inversion&amp;#039;&amp;#039;&amp;#039;}}) в программировании — &lt;a href=&quot;/index.php?title=%D0%9C%D0%BD%D0%B5%D0%BC%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Мнемоника (страница не существует)&quot;&gt;мнемонический&lt;/a&gt; &lt;a href=&quot;/index.php?title=%D0%90%D0%BA%D1%80%D0%BE%D0%BD%D0%B8%D0%BC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Акроним (страница не существует)&quot;&gt;акроним&lt;/a&gt;, введённый Майклом Фэзерсом ({{lang-en2|Michael Feathers}}) для перв...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{другие значения термина|solid|Solid}}&lt;br /&gt;
'''SOLID''' (сокр. от {{l6e|i=1|en|'''single responsibility''', '''open–closed''', '''Liskov substitution''', '''interface segregation'''}} и {{lang|en|'''dependency inversion'''}}) в программировании — [[Мнемоника|мнемонический]] [[акроним]], введённый Майклом Фэзерсом ({{lang-en2|Michael Feathers}}) для первых пяти принципов, названных [[Мартин, Роберт (инженер)|Робертом Мартином]]&amp;lt;ref name=&amp;quot;ub-old-web-solid&amp;quot;&amp;gt;{{cite web |author=[[Мартин, Роберт (инженер)|Мартин, Роберт]] (Дядя Боб) |title=Principles Of OOD |url=http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod |publisher=butunclebob.com |accessdate=2016-05-03 |archive-date=2016-10-25 |archive-url=https://web.archive.org/web/20161025223509/http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod |deadlink=no }} (прим. отсылка на «first five principles», то есть в статье не используется акроним.)&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ub-solid&amp;quot;&amp;gt;{{cite web |author=[[Мартин, Роберт (инженер)|Мартин, Роберт]] (Дядя Боб) |title=Getting a SOLID start |url=https://sites.google.com/site/unclebobconsultingllc/getting-a-solid-start |publisher=objectmentor.com |accessdate=2016-05-03 |archive-date=2016-12-26 |archive-url=https://web.archive.org/web/20161226015924/https://sites.google.com/site/unclebobconsultingllc/getting-a-solid-start |deadlink=no }}&amp;lt;/ref&amp;gt; в начале [[2000-е годы|2000-х]]&amp;lt;ref name=&amp;quot;metz-presentation-2009&amp;quot;&amp;gt;{{cite web |author=Sandi Metz (Duke University) |title=SOLID Object-Oriented Design |url=http://www.confreaks.com/videos/240-goruco2009-solid-object-oriented-design |accessdate=2016-05-03 |archiveurl=https://web.archive.org/web/20140329030135/http://www.confreaks.com/videos/240-goruco2009-solid-object-oriented-design |archivedate=2014-03-29 |deadlink=yes }} Выступление на конференции «2009 Gotham Ruby Conference» в мае 2009.&amp;lt;/ref&amp;gt;, которые означали 5 основных принципов объектно-ориентированных [[объектно-ориентированное проектирование|проектирования]] и  [[объектно-ориентированное программирование|программирования]].&lt;br /&gt;
&lt;br /&gt;
== Принципы ==&lt;br /&gt;
Избавиться от «признаков плохого проекта»&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; помогают следующие 5 принципов SOLID:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; font-size: 95%; table-layout: fixed; line-height:1.25; margin-left: auto; margin-right: auto;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Инициал&lt;br /&gt;
! Представляет&amp;lt;ref name=&amp;quot;ub-old-web-solid&amp;quot; /&amp;gt;&lt;br /&gt;
! Название&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Книга|автор=Роберт С. Мартин, Мика Мартин|заглавие=Принципы, паттерны и методики гибкой разработки на языке C#|ссылка=|издательство=Символ-плюс|место=СПб.|год=2011|страниц=768|страницы=8|isbn=978-5-93286-197-4}}&amp;lt;/ref&amp;gt;, понятие&lt;br /&gt;
|-&lt;br /&gt;
! S&lt;br /&gt;
| SRP&amp;lt;ref&amp;gt;{{cite web |title=Single Responsibility Principle |url=http://www.objectmentor.com/resources/articles/srp.pdf |archiveurl=https://web.archive.org/web/20150202200348/http://www.objectmentor.com/resources/articles/srp.pdf |archivedate=2015-06-01}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
; [[Принцип единственной ответственности]] (single responsibility principle)&lt;br /&gt;
: Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть [[Инкапсуляция (программирование)|инкапсулированы]] в этот класс и подчинены только этой задаче.&lt;br /&gt;
|-&lt;br /&gt;
! O&lt;br /&gt;
| OCP&amp;lt;ref&amp;gt;{{cite web |title=Open/Closed Principle |url=http://www.objectmentor.com/resources/articles/ocp.pdf |archiveurl=https://web.archive.org/web/20150905211525/http://www.objectmentor.com/resources/articles/ocp.pdf |archivedate=2015-09-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
; [[Принцип открытости/закрытости]] (open-closed principle)&lt;br /&gt;
: «программные сущности … должны быть открыты для расширения, но закрыты для модификации».&lt;br /&gt;
|-&lt;br /&gt;
! L&lt;br /&gt;
| LSP&amp;lt;ref&amp;gt;{{cite web |title=Liskov Substitution Principle |url=http://www.objectmentor.com/resources/articles/lsp.pdf |archiveurl=https://web.archive.org/web/20150905081111/http://www.objectmentor.com/resources/articles/lsp.pdf |archivedate=2015-09-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
; [[Принцип подстановки Лисков]] (Liskov substitution principle)&lt;br /&gt;
: «функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа не зная об этом». См. также [[контрактное программирование]].&lt;br /&gt;
|-&lt;br /&gt;
! I&lt;br /&gt;
| ISP&amp;lt;ref&amp;gt;{{cite web |title=Interface Segregation Principle |url=http://www.objectmentor.com/resources/articles/isp.pdf |archiveurl=https://web.archive.org/web/20150905081110/http://www.objectmentor.com/resources/articles/isp.pdf |archivedate=2015-09-05 |date=1996}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
;[[Принцип разделения интерфейса]] (interface segregation principle)&lt;br /&gt;
: «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения»&amp;lt;ref name=&amp;quot;martin-design-principles&amp;quot;&amp;gt;{{cite web|url=http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf| title=Design Principles and Design Patterns| author=[[Мартин, Роберт (инженер)|Мартин, Роберт]] (Дядя Боб)| publisher=objectmentor.com| accessdate=2009-01-14| archiveurl=https://web.archive.org/web/20150906155800/http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf| archivedate=2015-09-06| date=2000}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| DIP&amp;lt;ref&amp;gt;{{cite web |title=Dependency Inversion Principle |url=http://www.objectmentor.com/resources/articles/dip.pdf |archiveurl=https://web.archive.org/web/20150905081103/http://www.objectmentor.com/resources/articles/dip.pdf |archivedate=2015-09-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
;[[Принцип инверсии зависимостей]] (dependency inversion principle)&lt;br /&gt;
: «Зависимость на Абстракциях. Нет зависимости на что-то конкретное»&amp;lt;ref name=&amp;quot;martin-design-principles&amp;quot; /&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Для чего нужны принципы SOLID ==&lt;br /&gt;
При создании программных систем использование принципов SOLID способствует созданию такой системы, которую будет легко [[Сопровождение программного обеспечения|поддерживать]] и расширять в течение долгого времени&amp;lt;ref name=&amp;quot;metz-presentation-2009&amp;quot; /&amp;gt;. Принципы SOLID — это руководства, которые также могут применяться во время работы над существующим программным обеспечением для его улучшения, например, для удаления «[[код с запашком|дурно пахнущего кода]]».&lt;br /&gt;
&lt;br /&gt;
Стратегии [[гибкая методология разработки|гибкой]] и {{нп5|адаптивная разработка|адаптивной разработки|en|Adaptive software development}}&amp;lt;ref name=&amp;quot;metz-presentation-2009&amp;quot; /&amp;gt; предполагают написание кода с соблюдением принципов SOLID.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Don’t repeat yourself]]&lt;br /&gt;
* [[GRASP]]&lt;br /&gt;
* [[KISS (принцип)|KISS]]&lt;br /&gt;
* [[YAGNI]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* Роберт С. Мартин, Джеймс В. Ньюкирк, Роберт С. Косс. ''Быстрая разработка программ. Принципы, примеры, практика.'' — Вильямс, 2004, ISBN 5-8459-0558-3, ISBN 0-13-597444-5.&lt;br /&gt;
* Мартин Р., Мартин М. ''Принципы, паттерны и методики гибкой разработки на языке C#. — ''Символ-Плюс, 2011, ISBN 5-93286-197-5, ISBN 978-5-93286-197-4, ISBN 0-13-185725-8, ISBN 978-0-13-185725-4.&lt;br /&gt;
* Мартин, Р. ''Чистая архитектура. Искусство разработки программного обеспечения. = Clean architecture. A Craftsman’s Guide to Software Structure and Design.'' — Питер, 2018. — ISBN 978-5-4461-0772-8.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
{{википедия|SOLID (программирование)}}&lt;br /&gt;
* [http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod ''Principles Of OOD'']{{ref-en}} — Описание и ссылки на подробные статьи о SOLID.&lt;br /&gt;
* [https://habr.com/ru/companies/ruvds/articles/672288/ Семь раз отмерь, а SOLID все равно не про ООП. Монолог об архитектуре]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Объектно-ориентированное программирование]]&lt;br /&gt;
[[Категория:Проектирование программного обеспечения]]&lt;br /&gt;
[[Категория:Принципы программирования]]&lt;/div&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
</feed>