KISS (принцип)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Надпись «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»