Найти в Дзене
Любитель войти в IT

DRY, KISS, YAGNI или как правильно писать код

О чем статья? Приветствую своих читателей! Сегодня поговорим о 3 главных принципах проектирования ПО. DRY, KISS, YAGNI. Почему нужно использовать какие-то правила? Чтение и понимание чужого кода - одно из неотъемлемых частей работы любого разработчика. Если программа/функция/библиотека хорошо спроектирована и имеет грамотно составленную документацию, то и работать с ней будет проще и удобнее, чем с кодом, который написан "на коленке". DRY - Do not repeat yourself Не повторяйся! Представьте, что вы решили помочь вашему дяде Володе в создании магазина рыбацких товаров. Выбрали Python и фреймворк Flask, сверстали главную страницу, начинаете писать код для других страниц, но не используете наследование шаблонов, а пишете каждый раз код заново. В результате на 404 странице очередной удочки вы осознаете, что неплохо бы подправить общий шаблон, однако, теперь придется исправлять весь этот "косяк рыб". Если ваш код не дублируется, то для изменения логики достаточно внесения исправлений всего
Оглавление
Добрыня Неповторяевич, Алеша Простович, Илья Рационалевич
Добрыня Неповторяевич, Алеша Простович, Илья Рационалевич

О чем статья?

Приветствую своих читателей! Сегодня поговорим о 3 главных принципах проектирования ПО. DRY, KISS, YAGNI.

Почему нужно использовать какие-то правила?

Чтение и понимание чужого кода - одно из неотъемлемых частей работы любого разработчика. Если программа/функция/библиотека хорошо спроектирована и имеет грамотно составленную документацию, то и работать с ней будет проще и удобнее, чем с кодом, который написан "на коленке".

DRY - Do not repeat yourself

Не повторяйся!

Представьте, что вы решили помочь вашему дяде Володе в создании магазина рыбацких товаров. Выбрали Python и фреймворк Flask, сверстали главную страницу, начинаете писать код для других страниц, но не используете наследование шаблонов, а пишете каждый раз код заново. В результате на 404 странице очередной удочки вы осознаете, что неплохо бы подправить общий шаблон, однако, теперь придется исправлять весь этот "косяк рыб".

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

Проектировочные войны: Войны повторения кода
Проектировочные войны: Войны повторения кода

KISS - Keep It Small and Simplе

Будь проще!

  1. Не стоит перегружать интерфейс опциями, которыми не будут пользоваться большинство пользователей/программистов. Выделите их в отдельный интерфейс и пересмотрите свой взгляд на использование этого функционала, может быть, он и не нужен вам?
  2. Простота кода - превыше всего, потому что простой код - наиболее понятный.
Не перегружайте свой "Жигули"
Не перегружайте свой "Жигули"

YAGNI - You aren't gonna need it

Вам это не понадобится!

Вас попросили спроектировать стационарный компьютер и вы решили, что ему точно понадобятся колеса. Конечно, если вы Apple, то можете себе такое позволить, однако при проектировании я бы вам это точно не посоветовал. Не реализовывайте то, чего, по сути, не нужно. Принципы YAGNI и KISS очень похожи, однако, если KISS нацелен на упрощение и полезен в плане работы с теми требованиями, которые имеют место быть, то YAGNI более строг в этом плане и применяется для ограничения проектов от «размывания» их рамок.

YAGNI --> KISS --> DRY
YAGNI --> KISS --> DRY

Подытожим

Использование принципов DRY, KISS, YAGNI поможет вам не набить большое число "шишек" при проектировании ПО, а также люди, которые будут читать ваш код, скажут только "спасибо".

А используете ли вы эти подходы в ваших программах? Пишите в комментариях!

Подписывайтесь, здесь много интересного контента про IT и разработку. Будет интересно, обещаю!