Jump to content

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

(Перенаправлено из Принципа единого выбора )

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

Принцип DRY сформулирован следующим образом: «Каждая часть знаний должна иметь единственное, однозначное и авторитетное представление в системе». Принцип был сформулирован Энди Хантом и Дэйвом Томасом в их книге «Программист-прагматик» . [1] Они применяют его довольно широко, включая схемы баз данных , планы тестирования , систему сборки и даже документацию . [2] При успешном применении принципа DRY модификация любого отдельного элемента системы не требует изменения других логически несвязанных элементов. Кроме того, все логически связанные элементы изменяются предсказуемо и равномерно и, таким образом, синхронизируются . Помимо использования методов и подпрограмм в своем коде, Томас и Хант полагаются на генераторы кода , системы автоматической сборки и языки сценариев для соблюдения принципа DRY на всех уровнях.

Принцип единого выбора

[ редактировать ]

Частным случаем DRY является принцип единственного выбора . Это было определено Бертраном Мейером как:«Всякий раз, когда программная система должна поддерживать набор альтернатив, один и только один модуль в системе должен знать их исчерпывающий список». [3] Он был применен при проектировании Эйфеля .

Альтернативы

[ редактировать ]

Противоположная DRY точка зрения называется WET, обратным названием, которое обычно означает « писать все дважды». [4] (альтернативно пишите каждый раз , нам нравится печатать или тратить время зря ). Решения WET распространены в многоуровневых архитектурах, где перед разработчиком может быть поставлена ​​задача, например, добавить поле комментария в форму в веб-приложении. Текстовая строка «комментарий» может повторяться в метке, теге HTML, в имени функции чтения, частной переменной, DDL базы данных, запросах и т. д. Подход DRY устраняет эту избыточность за счет использования структур, которые сокращают или устраняют все задачи редактирования, кроме самых важных, оставляя возможность расширения добавления новых переменных знаний в одном месте. [5] Эта концепция «WET» как альтернативы «DRY» программированию существует в мире Java как минимум с 2002 года, хотя неизвестно, кто придумал этот термин. [6]

Другой подход к абстракциям — принцип AHA. AHA означает избегать поспешных абстракций , описанных Кентом К. Доддсом как оптимизация в первую очередь для изменений и избежание преждевременной оптимизации. [7] и находился под влиянием Сэнди Мец , которая «предпочитала дублирование неправильной абстракции». [8]

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

Программирование AHA первоначально было названо «влажным кодом» Доддсом, позже Дэниелом Бартоломе, [9] и первоначально названный как DAMP ( Не абстрагируйте методы преждевременно ). Мэттом Райером [10] Уже существовал другой принцип программирования, названный DAMP ( Описательные и значимые фразы ) и описанный Джеем Филдсом. [11] и сообщество выступило против использования слова «ВЛАЖНЫЙ» из-за культурной неприязни к слову « влажный» . [12] Доддс призвал к поиску альтернатив в Твиттере и предложил DATE в качестве альтернативы, прежде чем остановиться на Шер Скарлетт об AHA. предложении [7] [13] [14]

См. также

[ редактировать ]
  1. ^ Хант, Эндрю; Томас, Дэвид (1999). Программист-прагматик: от подмастерья к мастеру (1-е изд.). США: Аддисон-Уэсли. стр. 320 . ISBN  978-0201616224 .
  2. ^ Дэйв Томас, интервью с Биллом Веннерсом (10 октября 2003 г.). «Ортогональность и принцип DRY» . Проверено 1 декабря 2006 г.
  3. ^ Объектно-ориентированное создание программного обеспечения, 2-е издание, стр. 63
  4. ^ Пай, Прасид; Ксавье, Шайн (31 января 2017 г.). Шаблоны проектирования .NET . Packt Publishing Ltd. ISBN  978-1-78646-186-5 .
  5. ^ Джастин Ли (8 марта 2006 г.). «СУХОЙ – для неудачников» . Проверено 31 августа 2013 г.
  6. ^ Зиг Зихтерман (8 августа 2002 г.). «JavaOne 2002: Заметки Зига» . Проверено 9 января 2024 г.
  7. ^ Перейти обратно: а б Кент К. Доддс (01 апреля 2019 г.). «Программирование AHA» . Проверено 8 мая 2021 г.
  8. ^ Сэнди Мец (20 января 2016 г.). «Неправильная абстракция» . Проверено 8 мая 2021 г.
  9. ^ Варфоломе, Даниэль (21 августа 2020 г.). «Влажный код. Почему код не должен быть полностью СУХИМ» . Технический директор стартапа . Проверено 11 ноября 2021 г.
  10. ^ Хаус, Эв (24 декабря 2020 г.). «Использование кода DRY, WET & DAMP» . Середина . Проверено 11 ноября 2021 г.
  11. ^ Филдс, Джей. «Код DRY, DAMP DSL» . Мысли Джея Филдса . Проверено 11 ноября 2021 г.
  12. ^ Резник, Брайан (28 апреля 2016 г.). «Почему так много людей не любят слово «влажный»? У этого ученого есть теория» . Вокс Медиа . Проверено 11 ноября 2021 г.
  13. ^ Доддс, Кент (27 марта 2021 г.). «3 минуты с Кентом: сначала напиши код, а потом создавай абстракцию» . Трусики . Проверено 11 ноября 2021 г.
  14. ^ Доддс, Кент; Бостиан, Эмма; Ниси, Ник (30 июля 2021 г.). «JS Party – Эпизод № 186: Подсесть на React» . Журнал изменений . Проверено 11 ноября 2021 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0d2a9265a62ec06cbd5beb151f87aebc__1717391280
URL1:https://arc.ask3.ru/arc/aa/0d/bc/0d2a9265a62ec06cbd5beb151f87aebc.html
Заголовок, (Title) документа по адресу, URL1:
Don't repeat yourself - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)