Большая часть программных систем необосновано перегружена ненужными функциями. Это ухудшает удобство их использование конечными пользователями, а также усложняет их поддержку и развитие разработчиками. Следование принципу «KISS» позволяет разрабатывать решения, которые просты в использовании и в сопровождении.
KISS — это принцип проектирования и программирования, при котором простота системы декларируется в качестве основной цели или ценности. Есть два варианта расшифровки аббревиатуры: «keep it simple, stupid» и более корректный «keep it short and simple».
В проектировании следование принципу KISS выражается в том, что:
- Не имеет смысла реализовывать дополнительные функции, которые не будут использоваться вовсе или их использование крайне маловероятно. Как правило, большинству пользователей достаточно базового функционала, а усложнение только вредит удобству приложения.
- Не стоит перегружать интерфейс теми опциями, которые не будут нужны большинству пользователей, а пригодятся только узкой группе профессионалов или любителям тонкой настройки. Гораздо проще предусмотреть для редко используемых опций отдельный «расширенный» интерфейс или вовсе отказаться от избыточного функционала.
- Бессмысленно делать реализацию сложной бизнес‑логики, которая учитывает абсолютно все возможные варианты поведения системы, пользователя и окружающей среды. Во‑первых, это просто невозможно. А во‑вторых, такая фанатичность заставляет собирать «звездолёт», что чаще всего иррационально с коммерческой точки зрения.
В программировании следование принципу KISS можно описать так:
- Не имеет смысла беспредельно увеличивать уровень абстракции, надо уметь вовремя остановиться.
- Бессмысленно закладывать в проект избыточные функции «про запас», которые может быть когда‑нибудь кому‑либо понадобятся.
- Стоит отказываться от ненужных функций (и удалять их), если их ненужность стала очевидна. Не стоит сопровождать код и в целом функциональность, которые не используются.
- Не стоит подключать огромную библиотеку, если вам от неё нужна лишь пара функций.
- Декомпозиция чего‑то сложного на простые составляющие — это архитектурно верный подход.
- Абсолютная математическая точность или предельная детализация нужны не всегда — большинство систем создаются не для запуска космических шаттлов, данные можно и нужно обрабатывать с той точностью, которая достаточна для качественного решения задачи, а детализацию выдавать в нужном пользователю объёме, а не в максимально возможном.
- Избегайте преждевременной оптимизации — оптимизации обычно усложняют код и ухудшают его понимание, поэтому стоит заниматься оптизационными улучшениям только при фактическом наличии такой необходимости.
KISS имеет много общего c принципом разделения интерфейса из пяти принципов SOLID, сформулированных Робертом Мартином, а также тесно переплетается с принципами DRY и YAGNI. Вместе они формируют основу для написания чистого, эффективного кода. Однако важно не впадать в крайности: простота не должна идти в ущерб функциональности.
KISS — это призыв не к примитивизму, а к отказу от избыточного переусложнения. Следя за тем, чтобы код оставался простым, понятным и лаконичным, разработчики экономят время себе и коллегам, снижают риски возникновения ошибок и упрощают дальнейшее сопровождение проекта.