Принцип DRY неправильно понятПринцип DRY неправильно понят Я знаю, о чем вы думаете: «Снова скучная статья о СУХОЙ? У нас уже недостаточно?». Возможно, ты прав. Однако я вижу слишком много разработчиков (младших или старших), применяющих DRY, как будто они делают охоту на ведьм. Полностью беспорядочно или везде они могут.По-видимому, у нас никогда не было достаточно статей DRY в Интернете. Небольшое напоминание для тех, кто не отвечает: принцип DRY означает «Не повторяйте себя» и был впервые представлен в «Прагматическом программисте». Сам принцип был известен и применяется до того, как эта книга ожила. Однако Прагматический Программист точно определил его и надел на него имя. Не повторяйте знания Даже если предложение не повторяется, звучит достаточно просто, это звучит слишком широко. В «Прагматическом программисте» DRY определяется как «каждая часть знания должна иметь одно, недвусмысленное, авторитетное представление в системе». Это здорово, но ... что это за знания? Я бы определил его как любую часть вашего бизнес-домена или алгоритм.Чтобы использовать слишком используемые примеры электронной торговли, класс отправки и его поведение будут частью бизнес-области вашего приложения. Отгрузка - это то, что ваша компания использует для отправки продуктов своим клиентам. Это часть бизнес-модели вашей компании. Поэтому логика этой отправки должна появляться только один раз в приложении. Причина очевидна: представьте, что вам нужно отправлять отправления на склад. Вам необходимо запустить эту логику в 76 разных местах приложения. Нет проблем: вы повторяете логику 76 раз. Через некоторое время ваш босс приходит к вам и просит вас изменить логику. Вместо отправки отправки на один склад вам нужно отправить их на три разных.Результат? Вы потратите много времени на изменение логики, так как вам придется менять его в 76 местах! Это пустая трата времени, хороший способ создания ошибок и лучший способ выманить вашего босса. Решение: создать единое представление ваших знаний. Поместите логику, чтобы отправить груз в одном месте, а затем используйте представление этих знаний в любом месте, где оно вам нужно. В ООП отправка отправки может быть методом класса Отгрузка, которую вы можете повторно использовать по своему усмотрению. Еще один быстрый пример: представьте, что вы закодировали причудливый класс для разбора B-деревьев. Это можно рассматривать и как знание: это алгоритм, который нужно определить один раз. Представление этих знаний должно использоваться везде, не повторяя знания. DRY и дублирование кода Так что СУХОЙ - все о знании? Все о бизнес-логике? Начнем с очевидного:
|