KISS (акроним для «Keep it simple, stupid» — «Делай проще, тупица») — принцип проектирования, принятый в ВМС США в 1960 году.
Фраза впервые частично встречается в американском английском, по крайней мере, в 1938 году.
Принцип KISS утверждает, что большинство систем работает лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей и следует избегать ненужной сложности. Фраза ассоциировалась с авиаконструктором Кларенсом Джонсоном (1910—1990). В 1970-х годах широко использовался термин «KISS-принцип» ().
Варианты
Вариации на фразу включают (обычно как эвфемизм для более грубого «stupid»): «», «», «», «», «», «», «», «», «»[Post-Crescent https://archive.org/details/appleton-post-crescent-1973-11-04] (Appleton, WI) Sunday issue, Nov 4, 1973., «» и «».
Происхождение По имеющимся сообщениям, акроним был придуман Кларенсом Джонсоном, ведущим инженером Lockheed Skunk Works (создатели Lockheed U-2, SR-71 Blackbird и многих других самолётов).
В то время как уже несколько десятилетий популярно использование расшифровки «Keep it simple, stupid», Джонсон расшифровал KISS как «Keep it simple stupid» (без запятой), и эта трактовка до сих пор используется многими авторами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. (в английском языке, в отличие от русского, запятая для обособления (выделения) обращения нормативна, однако часто это правило игнорируется, что приводит к неоднозначностям и затрудняет восприятие текста). В ней не было никакого скрытого смысла, что инженер был глуп; как раз наоборот.
Этот принцип лучше всего иллюстрируется историей, когда Джонсон вручил команде инженеров-авиаконструкторов набор инструментов, поставив им условие: механик среднего уровня должен суметь отремонтировать реактивный самолёт, который они проектировали, в полевых условиях только с этими инструментами. Таким образом, «stupid» относится к отношению между тем, что всё ломается, и сложностью необходимого для этого ремонта.
Акроним часто используется в ВВС США и в области разработки программного обеспечения.
Варианты
Принцип, скорее всего, происходит от похожих концепций, таких как: бритва Оккама; «Простота есть высшая степень утонченности» () — Леонардо да Винчи; «Меньше — значит больше» () — Мис ван дер Роэ; «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», — Йохана Кройфа; «Совершенство достигнуто не тогда, когда нечего добавить, а тогда, когда нечего убрать» () — Антуана де Сент-Экзюпери; Колин Чепмен, основатель Lotus Cars, призывал своих дизайнеров: «Simplify, then add lightness». Альтернативная точка зрения — «Сделать всё как можно более простым, но не проще» — приписывается Альберту Эйнштейну, хотя это может быть и редакторское изложение своими словами лекции, которую дал Эйнштейн. «Simplify, Simplify, Simplify» Стива Джобса, упростившего цитату Генри Дэвида Торо «Simplify, simplify, simplify». Норткот Паркинсон сформулировал эту идею как «Третий закон Паркинсона» (ок. 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» — используемый в маркетинге вариант.
Использование
В анимационных фильмах
Аниматор Ричард Уильямс объясняет принцип KISS в своей книге The Animator’s Survival Kit, и девятка диснеевских стариков также пишет об этом в «The Illusion of Life: Disney Animation». Проблема в том, что неопытные аниматоры «чрезмерно одушевляют» в своих работах, то есть персонаж может двигаться слишком много и делать слишком много. Уильямс призывает аниматоров следовать «KISS».
В разработке ПО Принцип, запрещающий использование более сложных средств, чем необходимо . Изречение, часто вызываемое при обсуждении вопросов проектирования с целью парирования нарастающей функциональности и управления сложностью разработки. Возможно, связано с изречением . Принцип декларирует простоту системы в качестве основной цели и/или ценности. Эрик Рэймонд в своей книге The Unix Philosophy in One Lesson резюмирует философию UNIX как широко используемый принцип KISS Филип Ханик () на своей странице сайта Apache Foundation описал принцип KISS в программировании:
Разбивайте задачи на подзадачи, написание кода для решения которых не должно, по вашему мнению, длиться более 4—12 часов. Разбивайте задачу на множество более малых задач, каждая задача должна решаться одним или парой классов. Делайте свои методы маленькими. Каждый метод должен состоять не более чем из 30—40 строк. Каждый метод должен решать одну маленькую задачу, а не множество случаев. Если в вашем методе множество условий, разбейте его на несколько. Это повысит читаемость, позволит легче поддерживать код и быстрее находить ошибки в нём. Вы полюбите улучшать код. Делайте ваши классы маленькими. Здесь применяется та же техника, что и с методами. Сначала придумайте решение задачи, потом напишите код. Никогда не поступайте иначе. Многие разработчики придумывают решение задачи во время написания кода, и в этом нет ничего плохого. Вы можете делать так и при этом придерживаться правила, обозначенного выше. Если вы можете в уме разбивать задачу на более мелкие части, когда вы пишете код, делайте это любыми способами. И не бойтесь переписывать код ещё, ещё и ещё… В счёт не идёт число строк до тех пор, пока вы считаете, что можно ещё меньше/ещё лучше. Не бойтесь избавляться от кода. Изменение старого кода и написание нового решения — два важных момента. Если вы столкнулись с новыми требованиями или не были оповещены о них ранее, тогда порой лучше придумать новое, более изящное решение, решающее и старые, и новые задачи.
См. также Меньше — лучше (Less is more) Don't repeat yourself (DRY) You aren’t gonna need it (YAGNI) Arch Linux Slackware Linux RISC TMTOWTDI Раздутое программное обеспечение Это экономика, дурачок Мюнцинг Опрощение Простота
Примечания
Ссылки
KISS Principles for ORM Products Толмачёв Д. KISS — принцип проектирования, содержащий все остальные принципы проектирования. — Хабр. — 2015. — 3 января.
Категория:Принципы программирования Категория:Эмпирические принципы