объясни dry --простыми-словами

DRY
Как-то я поменял нашу политику возвратов и потом месяц находил ее в местах, о которых забыл. Сайт. Автоответ на email. Документ помощи. Маленький попап на чекауте. Каждый раз, когда мне казалось, что я поймал все, всплывало еще одно место со старой политикой, уверенно рассказывающей клиентам неправильную вещь.
У этого бардака есть имя в софте. Его противоположность — DRY.
DRY значит Don't Repeat Yourself. Правило простое: запиши информацию или логику ровно один раз, в одном месте, а все остальное пусть ссылается туда.
Бытовая версия: ты сохраняешь номер друга в контактах, а не пишешь его на десяти стикерах по дому. Когда он меняет телефон, ты обновляешь одну запись. Каждое сообщение, каждый звонок, каждое приложение, которое тянется к этому контакту, теперь автоматически использует новый номер. Ты не ходил на охоту. Ты поменял его в единственном месте, где он жил.
Код, который не DRY, — это версия со стикерами. Одно и то же правило копируют в пять мест:
- страница чекаута
- письмо подтверждения
- мобильное приложение
- админский дашборд
- какой-то отчет, на который никто не смотрел год
Теперь представь, что это правило надо поменять. Например, бесплатная доставка переезжает с $50 на $75. У тебя пять мест для правки, ты вспомнишь четыре, а пятое тихо продолжит обещать старую скидку каждому клиенту, который туда попадет. Никто не заметит, пока кто-то не заметит, обычно клиент, обычно в худший момент.
Вот почему "isn't DRY" — это упрек, а "DRY" — комплимент. Когда что-то написано один раз, а все вокруг на это указывает, изменение занимает одну правку, и ты закончил. Вся система обновляется синхронно, потому что все это время читала из одного источника.
Почему тебе, не-кодеру, это вообще важно:
- Это показывает, насколько страшно что-то менять. «Можем обновить X везде?» Когда ответ быстрый и уверенный, код, скорее всего, DRY. Когда в ответ вздох и «ну, это в нескольких местах», говорят стикеры, и именно там прячутся коварные баги.
- Это можно вслух попросить у своего ИИ. Тебе не нужно знать, как это делается. Нужно только знать слова.
Второй пункт — ключ. Когда агент строит для тебя, и ты чувствуешь, что он вставляет одно и то же снова и снова, его можно остановить одной строкой:
Эта фраза звучит так, будто ты занимаешься этим годами. Нет. Ты просто знаешь правило.
Одна честная оговорка, потому что DRY можно довести до абсурда. Две вещи, которые выглядят одинаково, не всегда являются одной и той же вещью. Иногда на двух страницах сегодня случайно показано "$50" по совершенно разным причинам, и заставлять их делить один источник только потому, что число совпало, создает худший узел позже, когда одно должно поменяться, а другое нет. Настоящий тест не «они выглядят одинаково?». Настоящий тест: «я всегда хотел бы менять их вместе?». Если да — сделай одним. Если нет — оставь отдельно.
Напиши один раз. Направь все туда. Поменяй в одном месте и смотри, как все обновляется само.