KISS (принцип)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

KISS (акроним для «Keep it short and simple») — принцип проектирования, принятый в ВМС США в 1960[1][2]. Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей и следует избегать ненужной сложности. Фраза ассоциировалась с авиаконструктором Кларенсом Джонсоном (1910—1990)[3]. В 1970-х гг. широко использовался термин «KISS-принцип» (англ. KISS principle)[4]. Вариации на фразу включают «англ. Keep it Simple, Silly», «keep it short and simple», «keep it simple and straightforward»[5] и «keep it small and simple».[6]

Происхождение[править | править вики-текст]

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

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

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

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

Варианты[править | править вики-текст]

Принцип, скорее всего, происходит от похожих концепций, таких как бритва Оккама, «Simplicity is the ultimate sophistication» Леонардо да Винчи, «Less is more» Мис ван дер Роэ, «Make Simple Tasks Simple!» Бьёрна Страуструпа или «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». Машины Робинсона и машина Голдберга, имеющие намеренно чрезмерно усложненные решения для простых задач или проблем, — юмористические примеры «не-KISS» решений.

Альтернативная точка зрения — «Сделать всё как можно более простым, но не проще» — приписывается Альберту Эйнштейну, хотя это может быть и редакторское изложение своими словами лекции, которую дал Эйнштейн[8].

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

В анимационных фильмах[править | править вики-текст]

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

В разработке ПО[править | править вики-текст]

KISS-принцип (от англ. keep it simple, stupid — «делай это проще, дурачок») — принцип, запрещающий использование более сложных средств, чем необходимо[9]. Изречение часто вызываемое при обсуждении вопросов проектирования с целью парирования нарастающей функциональности и управления сложностью разработки. Возможно, связано с изречением Keep It Short and Simple[10]. Принцип декларирует простоту системы в качестве основной цели и/или ценности. Эрик Рэймонд в своей книге резюмирует философию UNIX как широко используемый принцип KISS.[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: 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 (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.
  6. Kiss Principle.
  7. 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. Retrieved 2009-12-19.
  8. Everything Should Be Made as Simple as Possible, But Not Simpler | Quote Investigator
  9. KISS // Толковый словарь по информатике / Пивняк Г.Г.. — Д.: Нац. горн. ун-т, 2008. — С. 130. — 599 с. — ISBN 978-966-350-087-4.
  10. Kiss principle (англ.). Babylon.com. Проверено 25 июля 2010. Архивировано из первоисточника 18 февраля 2012.
  11. Eric Raymond. The Unix Philosophy in One Lesson // The Art of Unix Programming. — Addison-Wesley. — ISBN 0-13-142901-9.