Принцип программирования KISS — делайте вещи проще

Большая часть программных систем необосновано перегружена ненужными функциями. Это ухудшает удобство их использование конечными пользователями, а также усложняет их поддержку и развитие разработчиками. Следование принципу «KISS» позволяет разрабатывать решения, которые просты в использовании и в сопровождении.

KISS — это принцип проектирования и программирования, при котором простота системы декларируется в качестве основной цели или ценности. Есть два варианта расшифровки аббревиатуры: «keep it simple, stupid» и более корректный «keep it short and simple».

В проектировании следование принципу KISS выражается в том, что:

  • Не имеет смысла реализовывать дополнительные функции, которые не будут использоваться вовсе или их использование крайне маловероятно. Как правило, большинству пользователей достаточно базового функционала, а усложнение только вредит удобству приложения.
  • Не стоит перегружать интерфейс теми опциями, которые не будут нужны большинству пользователей, а пригодятся только узкой группе профессионалов или любителям тонкой настройки. Гораздо проще предусмотреть для редко используемых опций отдельный «расширенный» интерфейс или вовсе отказаться от избыточного функционала.
  • Бессмысленно делать реализацию сложной бизнес‑логики, которая учитывает абсолютно все возможные варианты поведения системы, пользователя и окружающей среды. Во‑первых, это просто невозможно. А во‑вторых, такая фанатичность заставляет собирать «звездолёт», что чаще всего иррационально с коммерческой точки зрения.

В программировании следование принципу KISS можно описать так:

  • не имеет смысла беспредельно увеличивать уровень абстракции, надо уметь вовремя остановиться;
  • бессмысленно закладывать в проект избыточные функции «про запас», которые может быть когда‑нибудь кому‑либо понадобятся (тут скорее правильнее подход согласно принципу YAGNI);
  • не стоит подключать огромную библиотеку, если вам от неё нужна лишь пара функций;
  • декомпозиция чего‑то сложного на простые составляющие — это архитектурно верный подход (тут KISS перекликается с DRY);
  • абсолютная математическая точность или предельная детализация нужны не всегда — большинство систем создаются не для запуска космических шаттлов, данные можно и нужно обрабатывать с той точностью, которая достаточна для качественного решения задачи, а детализацию выдавать в нужном пользователю объёме, а не в максимально возможном.

Также KISS имеет много общего c принципом разделения интерфейса из пяти принципов SOLID, сформулированных Робертом Мартином.

методологии разработкифронтендбэкендвеб-разработка
Статья опубликована в 2019 и была обновлена в 2023 году

Тематические статьи

Принцип программирования DRY — don’t repeat yourself / не повторяйте себя

Следование принципу DRY позволяет добиться высокой сопровождаемости программного продукта: внесение изменений и тестирование значительно упрощаются.

Если код не дублируется, то для изменения логики достаточно внесения исправлений всего в одном месте. Также значительно проще тестировать одну (пусть и более сложную) функцию, а не набор из десятков однотипных. При следовании DRY упрощается и повторное использование функций, вынесенных из сложных алгоритмов, что позволяет сократить время разработки и тестирования новой функциональности.

веб-разработка
бэкенд
фронтенд
методологии разработки
Статья опубликована в 2018 и обновлена в 2023 году

Принцип программирования YAGNI — «Вам это не понадобится»

Принцип заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться.

В результате разработка ненужных функций не сжигает бюджет проекта, а разработчики не тратят оплачиваемое время на реализацию и дальнейшее сопровождение в реальности ненужного функционала. Избыточный функционал сжигает больше всего ресурсов именно на сопровождении: больше написанного кода — труднее сопровождать и выше вероятность появления «багов». И тут очень уместна поговорка: «лучший код — это ненаписанный код».

методологии разработки
веб-разработка
бэкенд
фронтенд
Статья опубликована в 2019 и обновлена в 2023 году

SOLID — принципы объектно‑ориентированного программирования

SOLID это аббревиатура пяти основных принципов проектирования в объектно‑ориентированном программировании, предложенных Робертом Мартином:

  • Single responsibility — принцип единственной ответственности
  • Open-closed — принцип открытости / закрытости
  • Liskov substitution — принцип подстановки Барбары Лисков
  • Interface segregation — принцип разделения интерфейса
  • Dependency inversion — принцип инверсии зависимостей
веб-разработка
методологии разработки
бэкенд
Статья опубликована в 2019 и обновлена в 2023 году

TDD — разработка через тестирование

TDD, test-driven development или разработка через тестирование — это методология разработки ПО, повышающая надёжность и сопровождаемость проектов.

TDD основывается на повторении коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется программный код, который реализует желаемое поведение системы и позволяет пройти написанный тест, а после этого проводится рефакторинг написанного кода с постоянной проверкой прохождения тестов.

автоматизированное тестирование
тестирование
TDD
методологии разработки
Статья опубликована в 2014 и обновлена в 2023 году

Стандарты кодирования — залог хорошей сопровождаемости проекта

Любая командная разработка может быть эффективной только в том случае, если участники команды имеют общее видение.

Если над проектом работает команда, а не один‑два разработчика, то обязательно должен быть стандарт оформления кода — набор правил и соглашений, которые описывают базовые принципы оформления программного кода, используемого совместно группой разработчиков.

методологии разработки
веб-разработка
бэкенд
фронтенд
Статья опубликована в 2014 и обновлена в 2023 году

Наши услуги