Не повторяйте себя ( DRY , а иногда и не повторяться ) является принцип в разработке программного обеспечения , направленных на сокращение повторения моделей программного обеспечения, [1] заменить его абстракциями или с использованием нормализации данных , чтобы избежать избыточности.
Принцип DRY сформулирован как «Каждая часть знания должна иметь единственное, недвусмысленное и авторитетное представление в системе». Этот принцип сформулирован Энди Хантом и Дэйвом Томасом в их книге «Программист-прагматик» . [2] Они применяют его довольно широко, включая « схемы баз данных , планы тестирования , систему сборки и даже документацию ». [3]Когда принцип DRY применяется успешно, модификация любого отдельного элемента системы не требует изменения других логически не связанных элементов. Кроме того, все элементы, которые логически связаны, изменяются предсказуемо и единообразно и, таким образом, остаются синхронизированными . Помимо использования методов и подпрограмм в своем коде, Томас и Хант полагаются на генераторы кода , системы автоматической сборки и языки сценариев для соблюдения принципа DRY на всех уровнях.
СУХИЕ против ВЛАЖНЫХ против АНА
Нарушения DRY обычно называют WET-решениями, что обычно означает «писать каждый раз», «писать все дважды», «нам нравится печатать» или «тратить время впустую». Решения WET распространены в многоуровневых архитектурах, где разработчику может быть поручено, например, добавить поле комментария в форму в веб-приложении. Текстовая строка «комментарий» может повторяться в метке, теге HTML, в имени функции чтения, частной переменной, DDL базы данных, запросах и т. Д. Подход DRY устраняет эту избыточность за счет использования фреймворков, которые сокращают или устраняют все эти задачи редактирования, кроме наиболее важных, оставляя возможность расширения путем добавления новых переменных знаний в одном месте. [4] [5] [6]
Другой подход к абстракциям - принцип AHA. AHA означает «Избегайте поспешных абстракций», и это парадигма программирования , придуманный Cher Скарлетт , под влиянием Санди Metz «s„предпочитают дублирование по неправильному абстракции“, [7] и описываемую Кент С. Доддс , как оптимизировать для изменения первого, и предотвращение преждевременной оптимизации. [8]
AHA основывается на понимании того, что чем глубже мы инвестируем в абстрагирование части программного обеспечения, тем больше мы понимаем, что стоимость этих инвестиций никогда не может быть возмещена ( заблуждение невозвратных затрат ). Таким образом, инженеры склонны продолжать повторять одну и ту же абстракцию каждый раз, когда изменяется требование. Программирование AHA предполагает, что решения WET и DRY неизбежно создают жесткое и сложное в обслуживании программное обеспечение. Вместо того, чтобы начинать с абстракции или абстрагироваться при определенном количестве дубликатов, программное обеспечение может быть более гибким и надежным, если абстракция выполняется тогда, когда это необходимо, или когда само дублирование стало препятствием и известно, как абстракция нуждается в функционировать.
Смотрите также
- Принцип абстракции (программирование)
- Дублирование кода
- Повторное использование кода
- Скопируйте и вставьте программирование
- Нормализация и денормализация базы данных
- Зеркальное отображение диска
- Резервирование (инжиниринг)
- Правило трех (компьютерное программирование)
- Разделение проблем
- Единый источник истины (SSOT / SPOT)
- Структурированное программирование
- Два или более, используйте для
- Тебе это не понадобится
Рекомендации
- ^ Фут, Стивен (2014). Учимся программировать . Эддисон-Уэсли Профессионал. п. 336. ISBN. 9780133795226.
- ^ Хант, Эндрю; Томас, Дэвид (1999). Прагматичный программист: от подмастерья к мастеру (1-е изд.). США: Аддисон-Уэсли. С. 320 . ISBN 978-0201616224.
- ^ Дэйв Томас, интервью Билл Веннерс (2003-10-10). «Ортогональность и принцип DRY» . Проверено 1 декабря 2006 .
- ^ Джастин Ли (2006-03-08). «СУХОЙ для неудачников» . Проверено 31 августа 2013 .
- ^ Алекс Пападимулис (2011-12-08). «ВЛАЖНАЯ тележка» . Проверено 21 мая 2012 .
- ^ Кевин Грир (05.02.2016). «ПЕНА СУХАЯ + ВЛАЖНАЯ» . Проверено 9 марта 2016 .
- ^ Санди Мец (2016-01-20). «Неправильная абстракция» . Проверено 8 мая 2021 .
- ^ Кент С. Доддс (1 апреля 2019 г.). «Программирование AHA» . Проверено 8 мая 2021 .
Внешние ссылки
- Не повторяйся на WikiWikiWeb
- Один раз и только один раз на WikiWikiWeb
- 97 вещей, которые должен знать каждый программист (О'Рейли)
- Миф о чрезмерной нормализации (обсуждение академических крайностей и реальных сценариев баз данных)
- Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, Guy RT и др. (2014). «Лучшие практики для научных вычислений» . PLoS Biol . 12 (1): e1001745. arXiv : 1210,0530 . DOI : 10.1371 / journal.pbio.1001745 .
Не повторяй себя (или других)