В этом видео хотелось остановиться на таком принципе программирования, который называется DRY. Наверняка, вы не раз встречались с этим принципом и различными его объяснениями. 

Неважно на каком языке программирования вы работаете, этот принцип применим к любому языку программирования. 

Этот принцип, пожалуй один из самых основополагающих принципов в программировании. Расшифровывается эта аббревиатура как Don't Repeat Youself (не повторяй себя сам). 

Остальные принципы программирования тем или иным образом берут свои основы от этого основополагающего принципа. Остальные принципы программирования чаще всего являются методами, как реализовать принцип DRY. 

Это повторение, дублирование может происходить в двух местах: дублирование кода и дублирование данных. 

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

Кроме того, этот принцип может также относиться и к структуре данных, которые есть в вашей базе данных. Например, у вас есть некий товар и у этого товара есть какие-то характеристики. И у вас есть какая-то другая сущность, которая связана с товаром и какая-то характеристика этого товара там дублируется. 

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

Почему дублировать данные плохо?

1) Длинный код

2) Код занимает больше места на диске и дольше загружается. Мы теряем в скорости загрузки и обработки данных. 

3) Трудно что-то найти. 

Или искать в коротком коде или искать в длинном коде. 

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

Если вы работаете над большим проектом, эти правки могут возникать очень часто. 

Все не так плохо если вы знаете где у вас этот код дублируется, но если вы будете вносить какую правку у вас может возникнуть вопрос, а вдруг есть еще какое-то место в программе, где нужно что-то поменять. 

И этот вопрос будет мучать вас достаточно сильно. 

Можно забыть где-то что-то поменять. На изменения уйдет очень много времени. И получаем трудности в отладке. Или вам нужно протестировать только одно место, где что-то поменялось или нужно тестировать каждое место, где есть дублирование кода. 

Такой вот принцип программирования DRY. Надеюсь стало понятнее для чего это нужно.