Do Not Repeat Your Self: Как Правильно Использовать Принцип Dry В Разработке По Хабр


Они могут быть даже реализованы на разных языках программирования. Действительно, полностью устранить зависимость невозможно. Однако мы можем ее минимизировать хотя бы поверхностно. Причем, решение здесь такое же, как и в случае с функцией log() выше. Например, для веб-сервисов используется формат wsdl с описание запросов и типов входных и выходных параметров. А уже из этого wsdl-файла с помощью специальных утилит мы можем сгенерировать каркасы приложений клиента и сервера, которые останется лишь заполнить реализацией.

dry принципы

Верный способ создания приложения, которое потом будет невозможно сопровождать, заключается в том, чтобы вынести SQL-запросы в высокоуровневые классы. Первое, с чего мы должны начать, – это изоляция каждого элемента связи на своем уровне абстракции. Для каждой таблицы должна быть определена своя структура в языке программирования с соответствующими полями. А на каждую операцию добавления, чтения, обновления или удаления должен быть предусмотрен соответствующий метод или функция. о ли это не гарантирует нам выполнение принципа DRY.

Принцип Программирования Dry — Don’t Repeat Yourself / Не Повторяйте Себя

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

Это игра английских слов «dry» (рус. сухой) и «wet» (рус. влажный). Нарушения принципа DRY называют WET — «Write Everything Twice» (рус. Пиши всё по два раза). Следовательно, логика работы класса cargo должна появляться в приложении однократно. Принцип заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться. SOLID — это целый набор правил, а название образовалось по первым буквам каждого из них. Такой подход часто используется в крупных проектах и в командной работе над кодом.

Мы моделируем сущности “космический корабль” и “наноробот размером с атом”. Для обеих сущностей необходимо реализовать функцию расчета скорости. Учитывая, что наш стартап находится на ранней стадии развития и высокая точность расчетов нам не требуется, формула для расчета скорости космического корабля и наноробота совпадает. Поэтому кажется логичным выделить функцию расчета скорости в общий модуль.

Don’t Repeat Your Self

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

dry принципы

Если в таблицу БД добавляются новые столбцы, то нам придется самим следить за полями структур, которые должны им соответствовать. Создаем как отдельные инструменты для бизнеса, так и полноценные цифровые системы по индивидуальным требованиям. Это аббревиатура от фразы You aren’t gonna want it — «тебе это не понадобится».

Стандарты Кодирования — Залог Хорошей Сопровождаемости Проекта

Если код не дублируется, то для изменения логики достаточно внесения исправлений всего в одном месте. Также проще тестировать одну (пусть и более сложную) функцию, а не набор з дестов однотипных. Следование принципу программирования «DRY» позволяет добиться высокой сопровождаемости проекта, простоты внесения изменений и качественного тестирования. Interface segregation principle — принцип разделения интерфейса.

  • От разработчиков требуется тщательное планирование архитектуры, а от архитектора или тимлида требуется наличие видения системы в целом и чёткая постановка задач разработчикам.
  • В конце концов, наступает момент, когда кодовую базу невозможно поддерживать в рабочем состоянии.
  • одни и те же задачи, то согласно принципу DRY
  • Этот подход пересекается с принципом единственной ответственности из пяти принципов SOLID, сформулированных Робертом Мартином.
  • Дублирование кода может происходить по разным причинам.
  • Следовательно, логика работы класса shipment должна появляться в приложении однократно.

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

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

MVC — это паттерн проектирования приложений, который разделяет на три отдельных компонента модель данных приложения, пользовательский интерфейс и слой взаимодействия с пользователем. Любая командная разработка может быть эффективной только в том случае, если участники команды имеют общее видение. Но в случае наноробота, эта формула бесполезна, так как его скорость подчиняется принципам квантовой механики, определяется вероятностно и расчитывается используя принципиально другие формулы. Где 0– скорость объекта в инерциальной системе отсчета, а с – скорость света.

Dry – Принцип Из Мира Программистов, Который Стоит Взять Юристам На Вооружение

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

https://deveducation.com/

Конечно, можно написать новую функцию проверки пароля — она будет работать чуть проще, чем с вводом логина, и её можно легко добавить в код. Но если придерживаться принципа DRY, то нам следует использовать уже готовую функцию из блока авторизации, а логин передать туда самостоятельно. Может оказаться так, что для этого нужно будет чуть поправить исходную функцию, зато мы не будем дублировать код и сохрани единую логику раты. Самый популярный принцип разработки программного обеспечения в мире. Если ваше знание дважды повторяется в коде, и вы забыли обновить одно представление, то возникнут баги.

Именно поэтому рефакторинг или объединение кода должны опираться на глубокое понимание причин и природы дублирования – без них оптимизировать программное обеспечение невозможно. Объединив два разных случая вычисления площади в одну универсальную функцию, можно упростить процесс поддержания кода. Сначала напишите код, отладьте его, а затем уже держите в уме все эти принципы (DRY, SOLID и прочие), чтобы эффективно рефакторить код. Работать с нарушением принципа DRY нужно тогда, когда знание уже дублировано. Но я встречаю слишком много разработчиков (junior и senior), применяющих DRY так, словно они охотятся на ведьм.

Суть Принципа Dry

Можно было бы сгруппировать повторяющуюся логику с помощью своеобразной абстракции. Если изменится абстракция, то каждый контроллер должен будет поддерживать это изменение. Мы знали, что в большинстве случаев, в зависимости от использования, эти представления будут отображаться по-разному. Пришлось бы в действиях контроллеров создавать кучу if, а мы этого не хотели. Метод проверяет результат парсинга CSV только в одном месте (validateProduct()). Я бы определил это как любую часть предметной области бизнеса или алгоритма.

Дублирование Знания?

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

Dry И Дублирование Кода

Положите куда-нибудь логику отправки товара на склад, а затем используйте представление этого знания везде, где нужно. В ООП отправка груза может быть методом класса cargo, который вы можете использовать по своему усмотрению. Решение задачи c БД может быть построено на применении генераторов, как и в случае с wsdl, описанном выше.

Это достаточно очевидные случаи, которые встречаются регулярно. Но несколько иначе на принцип DRY меня заставила посмотреть книга Программист-прагматик. Путь от подмастерья к мастеру, которую я могу вам рекомендовать. Разрабатываем и сопровождаем комплексные системы, устойчивые к отказу оборудования, отдельных сервисов и целых подсистем.

У разработчиков есть свои термины, которыми они описывают разные принципы разработки — например DRY, SOLID и YAGNI. Рассказываем, что они означают и что имеют в виду принципы разработки по программисты, когда говорят такое. Этот подход пересекается с принципом единственной ответственности из пяти принципов SOLID, сформулированных Робертом Мартином.


Leave a Reply

Your email address will not be published. Required fields are marked *