KISS (принцип): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
м откат правок 5.248.17.247 (обс.) к версии 87.255.75.111
Метка: откат
 
(не показано 168 промежуточных версий, сделанных более чем 100 участниками)
Строка 1: Строка 1:
{{Перенаправление|KISS|Kiss (значения)}}
{{другие значения|Kiss (значения)}}
[[Файл:Keep it Simple.jpg|мини|Надпись «Keep it Simple»]]
'''KISS''' ([[акроним]] для «'''Keep it simple, stupid'''» — «Делай проще, тупица») — принцип [[Проектирование|проектирования]], принятый в [[ВМС США]] в 1960 году<ref name=TDal/><ref name=EPar/>.


Впервые частично встречается в [[Американский вариант английского языка|американском английском]] по крайней мере в 1938 году. Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей и следует избегать ненужной сложности. Фраза ассоциировалась с авиаконструктором [[Джонсон, Кларенс|Кларенсом Джонсоном]] (1910—1990)<ref name=BRich/>. В 1970-х годах широко использовался термин «KISS-принцип» ({{lang-en|KISS principle}})<ref name=Pit/>. Вариации на фразу включают (обычно как [[эвфемизм]] для более грубого «stupid»): «{{lang-en2|keep it super simple}}», «{{lang-en2|keep it simple, silly}}», «{{lang-en2|keep it short and simple}}», «{{lang-en2|keep it short and sweet}}», «{{lang-en2|keep it simple and straightforward}}»<ref name="monash">{{cite web |url=https://business.monash.edu/marketing/marketing-dictionary/k |title=Kiss principle definition by MONASH Marketing Dictionary |date=1994-11-18 |accessdate=2016-01-24 |archiveurl=https://web.archive.org/web/20160130043650/https://business.monash.edu/marketing/marketing-dictionary/k |archivedate=2016-01-30 |deadlink=yes }}</ref>, «{{lang-en2|keep it small and simple}}»<ref>{{cite web|url=http://people.apache.org/~fhanik/kiss.html|title=Kiss Principle|accessdate=2015-10-01|archiveurl=https://web.archive.org/web/20110921083918/http://people.apache.org/~fhanik/kiss.html|archivedate=2011-09-21|deadlink=yes}}</ref>, «{{lang-en2|keep it simple, soldier}}», «{{lang-en2|keep it simple, sailor}}», «{{lang-en2|keep it simple, sweetie}}»<ref>Sunday Post-Crescent (Appleton, WI) 4 ноября, 1973.</ref>, «{{lang-en2|keep it stupidly simple}}» и «{{lang-en2|keep it sweet and simple}}».
'''Принцип «KISS»''' ({{lang-en|Keep It Simple, Stupid}} — «делай проще, дурак») — процесс и принцип проектирования, при котором простота системы декларируется в качестве основной цели и/или ценности. Также часто используется более вежливая расшифровка — Keep It Short and Simple («делай короче и проще»). За многие годы были отвергнуты разные расшифровки акронима KISS, и есть некоторые сомнения в том, которая из них является оригинальной.


== Происхождение ==
Эта концепция имеет прямую аналогию с «[[бритва Оккама|бритвой Оккама]]»,например, в интерпретации [[Эйнштейн, Альберт|Альберта Эйнштейна]] что «всё должно быть сделано настолько простым, насколько это возможно, но не проще». Тенденцию к поискам возможно более простых решений выдающийся советский [[математик]] [[Колмогоров, Андрей Николаевич|А. Н. Колмогоров]] считает универсальным принципом, руководящим работой [[мышление|мышления]] и [[творчество|творчества]]. [http://www.proza.ru/2007/05/13-222]
По имеющимся сообщениям, акроним был придуман Кларенсом Джонсоном, ведущим инженером Lockheed Skunk Works (создатели [[Lockheed U-2]], [[SR-71 Blackbird]] и многих других самолётов)<ref name=BRich/>.

В то время как уже несколько десятилетий популярно использование расшифровки «Keep it simple, stupid», Джонсон расшифровал KISS как «Keep it simple stupid» (без запятой), и эта трактовка до сих пор используется многими авторами<ref name=misra>Ram B. Misra (2004), «Global IT Outsourcing: Metrics for Success of All Parties», ''Journal of Information Technology Cases and Applications'', volume 6 issue 3, page 21. [http://web.njit.edu/~jerry/Outsourcing/out-JITCA-6-3-2004-2.pdf Online version] {{Wayback|url=http://web.njit.edu/~jerry/Outsourcing/out-JITCA-6-3-2004-2.pdf |date=20120129095957 }}. Retrieved 2009-12-19.</ref> (в английском языке, в отличие от русского, запятая используется для [[Обращение (лингвистика)#Пунктуация|обособления (выделения) обращения]] достаточно редко). В ней не было никакого скрытого смысла, что инженер был глуп; как раз наоборот<ref name=BRich/>.

Этот принцип лучше всего иллюстрируется историей, когда Джонсон вручил команде инженеров-авиаконструкторов набор инструментов, поставив им условие: механик среднего уровня должен суметь отремонтировать реактивный самолёт, который они проектировали, в полевых условиях только с этими инструментами. Таким образом, «stupid» относится к отношению между тем, что всё ломается, и сложностью необходимого для этого ремонта.

Акроним часто используется в [[ВВС США]] и в области [[Разработка программного обеспечения|разработки программного обеспечения]].

== Варианты ==
Принцип, скорее всего, происходит от похожих концепций, таких как:

* [[бритва Оккама]];
* «Простота есть высшая степень утонченности»{{efn|«La semplicità è l'ultima sofisticazione»}} [[Леонардо да Винчи]];
* «Меньше — значит больше»{{efn|«Weniger ist mehr»}} [[Мис ван дер Роэ, Людвиг|Мис ван дер Роэ]];
* «Make Simple Tasks Simple!» [[Страуструп, Бьёрн|Бьёрна Страуструпа]];
* «So the writer who breeds more words than he needs, is making a chore for the reader who reads» [[Доктор Сьюз|Доктора Сьюза;]]
* «Playing football is very simple but playing simple football is the hardest thing there is» [[Йохан Кройф Арена|Йохана Кройфа]];
* «Совершенство достигнуто не тогда, когда нечего добавить, а тогда, когда нечего убрать»{{efn|«Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher»}} [[Сент-Экзюпери, Антуан де|Антуана де Сент-Экзюпери]];
* [[Чепмен, Колин|Колин Чепмен]], основатель [[Lotus Cars]], призывал своих дизайнеров «Simplify, then add lightness».
* Альтернативная точка зрения — «Сделать всё как можно более простым, но не проще» — приписывается [[Эйнштейн, Альберт|Альберту Эйнштейну]], хотя это может быть и редакторское изложение своими словами лекции, которую дал Эйнштейн<ref>{{Cite web |url=http://quoteinvestigator.com/2011/05/13/einstein-simple/#more-2363 |title=Everything Should Be Made as Simple as Possible, But Not Simpler {{!}} Quote Investigator<!-- Заголовок добавлен ботом --> |access-date=2016-05-03 |archive-date=2012-05-29 |archive-url=https://web.archive.org/web/20120529075018/http://quoteinvestigator.com/2011/05/13/einstein-simple/#more-2363 |deadlink=no }}</ref>.
* «<s>Simplify</s>, <s>Simplify</s>, Simplify» [[Джобс, Стив|Стива Джобса]], упростившего цитату [[Торо, Генри|Генри Дэвида Торо]] «Simplify, simplify, simplify».
* [[Паркинсон, Сирил Норткот|Норткот Паркинсон]]<nowiki/> сформулировал эту идею как «Третий закон Паркинсона» (ок. 1957): «Expansion means complexity and complexity, decay; or to put it even more plainly—the more complex, the sooner dead».

Машины Робинсона и [[машина Голдберга]], имеющие намеренно чрезмерно усложнённые решения для простых задач или проблем, — юмористические примеры «не-KISS» решений.

«Keep it simple and straightforward» — используемый в маркетинге вариант<ref name="monash"/>.
<!-- Эта концепция имеет прямую аналогию с «[[бритва Оккама|бритвой Оккама]]» (например, это в интерпретации [[Эйнштейн, Альберт|Альберта Эйнштейна]] звучит так, что «''Всё следует упрощать до тех пор, пока это возможно, но не более того''»). Тенденцию к поискам возможно более простых решений выдающийся советский математик [[Колмогоров, Андрей Николаевич|А. Н. Колмогоров]] считает универсальным принципом, руководящим работой [[мышление|мышления]] и [[творчество|творчества]]<ref>[http://www.proza.ru/2007/05/13-222 Письмо академика А. Н. Колмогорова (Влад Лившиц) / Проза.ру — национальный сервер современной прозы] </ref>. --> <!--Этот абзац закомментирован, так как без дополнительных вторичных АИ представляет собой Орисс. Подробнее см. СО статьи.-->

== Использование ==

=== В анимационных фильмах ===
Аниматор [[Уильямс, Ричард|Ричард Уильямс]] объясняет принцип KISS в своей книге ''The Animator’s Survival Kit'', и [[девятка диснеевских стариков]] также пишут об этом в «[[The Illusion of Life: Disney Animation]]». Проблема в том, что неопытные аниматоры «чрезмерно одушевляют» в своих работах, то есть персонаж может двигаться слишком много и делать слишком много. Уильямс призывает аниматоров следовать «KISS».

=== В разработке ПО ===
Принцип, запрещающий использование более сложных средств, чем необходимо<ref>{{книга|часть=KISS|заглавие=Толковый словарь по информатике|ссылка=https://archive.org/details/isbn_9789663500874|ответственный=Пивняк Г.Г.|место=Д.|издательство=Нац. горн. ун-т|год=2008|страницы=[https://archive.org/details/isbn_9789663500874/page/n132 130]|страниц=599|isbn=978-966-350-087-4}}</ref>. Изречение, часто вызываемое при обсуждении вопросов проектирования с целью парирования нарастающей функциональности и управления сложностью разработки. Возможно, связано с изречением {{lang-en2|Keep It Short and Simple}}<ref>{{cite web
|url = http://dictionary.babylon-software.com/kiss_principle/
|title = Kiss principle
|publisher = Babylon.com
|accessdate = 2010-07-25
|lang = en
|archiveurl = https://www.webcitation.org/65XnGGCIE?url=http://dictionary.babylon.com/kiss_principle/
|archivedate = 2012-02-18
}}</ref>. Принцип декларирует простоту системы в качестве основной цели и/или ценности.
* [[Чем хуже, тем лучше|Меньше - лучше]] (Less is more)
* [[Don't repeat yourself]] (DRY)
* [[YAGNI|You aren’t gonna need it]] (YAGNI)
* [[Рэймонд, Эрик|Эрик Рэймонд]] в своей книге резюмирует [[Философия UNIX|философию UNIX]] как широко используемый принцип KISS<ref>{{книга|автор=[[Рэймонд, Эрик|Eric Raymond]].|заглавие=The Art of Unix Programming|часть=The Unix Philosophy in One Lesson|ссылка часть=http://www.catb.org/~esr/writings/taoup/html/ch01s07.html|издательство=Addison-Wesley|isbn=0-13-142901-9}}</ref>
* [[Arch Linux]]
* [[Slackware|Slackware Linux]]
* [[RISC]]
* [[TMTOWTDI]]

{{начало цитаты}}
* Разбивайте задачи на подзадачи, написание кода для решения которых не должно, по вашему мнению, длиться более 4—12 часов.
* Разбивайте задачу на множество более маленьких задач, каждая задача должна решаться одним или парой классов.
* Делайте ваши методы маленькими. Каждый метод должен состоять не более чем из 30—40 строк. Каждый метод должен решать одну маленькую задачу, а не множество случаев. Если в вашем методе множество условий, разбейте его на несколько. Это повысит читаемость, позволит легче поддерживать код и быстрее находить ошибки в нём. Вы полюбите улучшать код.
* Делайте ваши классы маленькими. Здесь применяется та же техника, что и с методами.
* Сначала придумайте решение задачи, потом напишите код. Никогда не поступайте иначе. Многие разработчики придумывают решение задачи во время написания кода, и в этом нет ничего плохого. Вы можете делать так и при этом придерживаться правила, обозначенного выше. Если вы можете в уме разбивать задачу на более мелкие части, когда вы пишете код, делайте это любыми способами. И не бойтесь переписывать код ещё, ещё и ещё… В счёт не идёт число строк, до тех пор пока вы считаете, что можно ещё меньше/ещё лучше.
* Не бойтесь избавляться от кода. Изменение старого кода и написание нового решения — два важных момента. Если вы столкнулись с новыми требованиями или не были оповещены о них ранее, тогда порой лучше придумать новое, более изящное решение, решающее и старые, и новые задачи.
{{конец цитаты|источник=Filip Hanik, Senior Software Engineer в SpringSource Division VMware, Inc. <sup>[http://people.apache.org/~fhanik/kiss.html Полный текст]</sup>}}


== См. также ==
== См. также ==
* [[Раздутое программное обеспечение]]
* [[Чем хуже, тем лучше]]
* [[Это экономика, дурачок]]
* [[Гносеологический принцип А. Н. Колмогорова]]
* [[Мюнцинг]]
* [[Опрощение (идеология)|Опрощение]]
* [[Простота]]

== Примечания ==
{{примечания |refs=
<ref name="BRich">[http://www.nasonline.org/publications/biographical-memoirs/memoir-pdfs/johnson-clarence.pdf ''Clarence Leonard (Kelly) Johnson 1910—1990: A Biographical Memoir''] {{Wayback|url=http://www.nasonline.org/publications/biographical-memoirs/memoir-pdfs/johnson-clarence.pdf |date=20151010101105 }} (PDF),
by Ben R. Rich, 1995, National Academies Press,
Washington, DC, p. 13.</ref>
<ref name="TDal">''The Routledge Dictionary of Modern American Slang and Unconventional English'',
Tom Dalzell, 2009, 1104 pages, p.595, webpage:
[https://books.google.com/books?id=5F-YNZRv-VMC&pg=PA595 BGoogle-5F] {{Wayback|url=https://books.google.com/books?id=5F-YNZRv-VMC&pg=PA595 |date=20161124185829 }}:
notes U.S. Navy "Project KISS" of 1960, headed by [[Rear Admiral]]
Paul D. Stroop, ''[[Chicago Daily Tribune]]'', p.43, 4 December 1960.</ref>
<ref name="EPar">
''The Concise New Partridge Dictionary of Slang'', Eric Partridge,
Tom Dalzell, Terry Victor, Psychology Press, 2007, p.384.
</ref>
<ref name="Pit">
''Pit & Quarry'', Vol. 63, July 1970, p.172, quote: "as in every
other step of the development process, follow the KISS
principle — Keep It Simple, Stupid."
</ref>
}}

=== Комментарии ===
{{комментарии}}


== Ссылки ==
{{sci-stub}}
* [https://web.archive.org/web/20110921083918/http://people.apache.org/~fhanik/kiss.html Kiss Principle]
{{tech-stub}}
* [http://www.softwaretree.com/v1/KISSPrinciples.html KISS Principles for ORM Products]
* [https://habrahabr.ru/post/249639/ KISS — принцип проектирования, содержащий все остальные принципы проектирования]


{{Внешние ссылки}}
[[Категория:Оптимизация]]


[[Категория:Принципы программирования]]
[[bg:Принцип KISS]]
[[Категория:Эмпирические принципы]]
[[cs:KISS]]
[[de:KISS-Prinzip]]
[[en:KISS principle]]
[[es:Principio KISS]]
[[fi:KISS-periaate]]
[[fr:Keep it Simple, Stupid]]
[[he:KISS]]
[[it:KISS (informatica)]]
[[ja:KISS原則]]
[[ko:KISS 원칙]]
[[nl:KISS-principe]]
[[no:KISS-prinsippet]]
[[pl:KISS (reguła)]]
[[pt:Keep It Simple]]
[[simple:K.I.S.S.]]
[[sk:Princíp jednoduchosti]]
[[sl:Načelo KISS]]
[[sv:KISS-principen]]
[[th:KISS]]
[[zh:KISS原则]]

Текущая версия от 10:59, 3 ноября 2024

Надпись «Keep it Simple»

KISS (акроним для «Keep it simple, stupid» — «Делай проще, тупица») — принцип проектирования, принятый в ВМС США в 1960 году[1][2].

Впервые частично встречается в американском английском по крайней мере в 1938 году. Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей и следует избегать ненужной сложности. Фраза ассоциировалась с авиаконструктором Кларенсом Джонсоном (1910—1990)[3]. В 1970-х годах широко использовался термин «KISS-принцип» (англ. KISS principle)[4]. Вариации на фразу включают (обычно как эвфемизм для более грубого «stupid»): «keep it super simple», «keep it simple, silly», «keep it short and simple», «keep it short and sweet», «keep it simple and straightforward»[5], «keep it small and simple»[6], «keep it simple, soldier», «keep it simple, sailor», «keep it simple, sweetie»[7], «keep it stupidly simple» и «keep it sweet and simple».

Происхождение

[править | править код]

По имеющимся сообщениям, акроним был придуман Кларенсом Джонсоном, ведущим инженером Lockheed Skunk Works (создатели Lockheed U-2, SR-71 Blackbird и многих других самолётов)[3].

В то время как уже несколько десятилетий популярно использование расшифровки «Keep it simple, stupid», Джонсон расшифровал KISS как «Keep it simple stupid» (без запятой), и эта трактовка до сих пор используется многими авторами[8] (в английском языке, в отличие от русского, запятая используется для обособления (выделения) обращения достаточно редко). В ней не было никакого скрытого смысла, что инженер был глуп; как раз наоборот[3].

Этот принцип лучше всего иллюстрируется историей, когда Джонсон вручил команде инженеров-авиаконструкторов набор инструментов, поставив им условие: механик среднего уровня должен суметь отремонтировать реактивный самолёт, который они проектировали, в полевых условиях только с этими инструментами. Таким образом, «stupid» относится к отношению между тем, что всё ломается, и сложностью необходимого для этого ремонта.

Акроним часто используется в ВВС США и в области разработки программного обеспечения.

Принцип, скорее всего, происходит от похожих концепций, таких как:

Машины Робинсона и машина Голдберга, имеющие намеренно чрезмерно усложнённые решения для простых задач или проблем, — юмористические примеры «не-KISS» решений.

«Keep it simple and straightforward» — используемый в маркетинге вариант[5].

Использование

[править | править код]

В анимационных фильмах

[править | править код]

Аниматор Ричард Уильямс объясняет принцип KISS в своей книге The Animator’s Survival Kit, и девятка диснеевских стариков также пишут об этом в «The Illusion of Life: Disney Animation». Проблема в том, что неопытные аниматоры «чрезмерно одушевляют» в своих работах, то есть персонаж может двигаться слишком много и делать слишком много. Уильямс призывает аниматоров следовать «KISS».

В разработке ПО

[править | править код]

Принцип, запрещающий использование более сложных средств, чем необходимо[10]. Изречение, часто вызываемое при обсуждении вопросов проектирования с целью парирования нарастающей функциональности и управления сложностью разработки. Возможно, связано с изречением Keep It Short and Simple[11]. Принцип декларирует простоту системы в качестве основной цели и/или ценности.

  • Разбивайте задачи на подзадачи, написание кода для решения которых не должно, по вашему мнению, длиться более 4—12 часов.
  • Разбивайте задачу на множество более маленьких задач, каждая задача должна решаться одним или парой классов.
  • Делайте ваши методы маленькими. Каждый метод должен состоять не более чем из 30—40 строк. Каждый метод должен решать одну маленькую задачу, а не множество случаев. Если в вашем методе множество условий, разбейте его на несколько. Это повысит читаемость, позволит легче поддерживать код и быстрее находить ошибки в нём. Вы полюбите улучшать код.
  • Делайте ваши классы маленькими. Здесь применяется та же техника, что и с методами.
  • Сначала придумайте решение задачи, потом напишите код. Никогда не поступайте иначе. Многие разработчики придумывают решение задачи во время написания кода, и в этом нет ничего плохого. Вы можете делать так и при этом придерживаться правила, обозначенного выше. Если вы можете в уме разбивать задачу на более мелкие части, когда вы пишете код, делайте это любыми способами. И не бойтесь переписывать код ещё, ещё и ещё… В счёт не идёт число строк, до тех пор пока вы считаете, что можно ещё меньше/ещё лучше.
  • Не бойтесь избавляться от кода. Изменение старого кода и написание нового решения — два важных момента. Если вы столкнулись с новыми требованиями или не были оповещены о них ранее, тогда порой лучше придумать новое, более изящное решение, решающее и старые, и новые задачи.
Filip Hanik, Senior Software Engineer в SpringSource Division VMware, Inc. Полный текст

Примечания

[править | править код]
  1. The Routledge Dictionary of Modern American Slang and Unconventional English, Tom Dalzell, 2009, 1104 pages, p.595, webpage: BGoogle-5F Архивная копия от 24 ноября 2016 на Wayback Machine: notes U.S. Navy "Project KISS" of 1960, headed by Rear Admiral Paul D. Stroop, Chicago Daily Tribune, p.43, 4 December 1960.
  2. The Concise New Partridge Dictionary of Slang, Eric Partridge, Tom Dalzell, Terry Victor, Psychology Press, 2007, p.384.
  3. 1 2 3 Clarence Leonard (Kelly) Johnson 1910—1990: A Biographical Memoir Архивная копия от 10 октября 2015 на Wayback Machine (PDF), by Ben R. Rich, 1995, National Academies Press, Washington, DC, p. 13.
  4. Pit & Quarry, Vol. 63, July 1970, p.172, quote: "as in every other step of the development process, follow the KISS principle — Keep It Simple, Stupid."
  5. 1 2 Kiss principle definition by MONASH Marketing Dictionary (18 ноября 1994). Дата обращения: 24 января 2016. Архивировано из оригинала 30 января 2016 года.
  6. Kiss Principle. Дата обращения: 1 октября 2015. Архивировано из оригинала 21 сентября 2011 года.
  7. Sunday Post-Crescent (Appleton, WI) 4 ноября, 1973.
  8. Ram B. Misra (2004), «Global IT Outsourcing: Metrics for Success of All Parties», Journal of Information Technology Cases and Applications, volume 6 issue 3, page 21. Online version Архивная копия от 29 января 2012 на Wayback Machine. Retrieved 2009-12-19.
  9. Everything Should Be Made as Simple as Possible, But Not Simpler | Quote Investigator. Дата обращения: 3 мая 2016. Архивировано 29 мая 2012 года.
  10. KISS // Толковый словарь по информатике / Пивняк Г.Г.. — Душанбе: Нац. горн. ун-т, 2008. — С. 130. — 599 с. — ISBN 978-966-350-087-4.
  11. Kiss principle (англ.). Babylon.com. Дата обращения: 25 июля 2010. Архивировано 18 февраля 2012 года.
  12. Eric Raymond. The Unix Philosophy in One Lesson // The Art of Unix Programming. — Addison-Wesley. — ISBN 0-13-142901-9.

Комментарии

[править | править код]
  1. «La semplicità è l'ultima sofisticazione»
  2. «Weniger ist mehr»
  3. «Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher»