Перевод слова dry с английского на русский
Содержание:
Ошибочное понимание принципа DRY 30
- 27.02.18 09:42
•
AloneCoder
•
#349978
•
Хабрахабр
•
Перевод
•
•
11000
IT-стандарты, PHP, Блог компании Mail.Ru Group, Разработка веб-сайтов, Анализ и проектирование систем
Я знаю, о чём вы подумали: «Ещё одна скучная статья про DRY? Нам их мало, что ли?».
Возможно, вы правы. Но я встречаю слишком много разработчиков (junior и senior), применяющих DRY так, словно они охотятся на ведьм. Либо совершенно непредсказуемо, либо везде, где можно. Так что, судя по всему, в интернете никогда не будет достаточно статей о принципе DRY.
Если кто не знает: принцип DRY — это «Don’t Repeat Yourself» (не повторяйся), и впервые о нём упомянуто в книге The Pragmatic Programmer. Хотя сам по себе этот принцип был известен и применялся задолго до появления книги, однако в ней ему было дано название и точное определение.
Итак, без лишних рассуждений отправимся в путешествие по чудесной стране DRY!
Как расшифровать значки
Инструкция по стирке в ряде случаев может содержать пояснения на нескольких языках. Из наиболее популярных и известных для нас языков чаще всего используется английский. Вы можете встретить на ярлыке одежды подобные описания: «Machine wash only. Tumble dry low. Do not bleach. Do not iron. Do not dry clean.» Текст дублирует смысл изображенных символов, поэтому даже если текстовых пояснений нет, по знакам можно понять основные условия бережного ухода и сохранения внешнего вида изделия.
Если вы посмотрите на внутреннюю этикетку изделия, в общем случае вы увидите 5 значков, по одному для каждого блока. Как уже было описано выше, из-за разных систем обозначений, может быть приведено больше значков, не 5, а 25, например. Не стоит пугаться, выделите для себя один ряд с пятью знаками, наиболее понятными и знакомыми для вас и изучите их.
Первый значок на одежде, как правило, касается стирки. Помимо основного знака возможны несколько вариантов температурного режима:
- 30 градусов или 1 точка – машинная или ручная стирка одежды и белья в холодной воде или выбор деликатного режима для синтетической одежды;
- 40 градусов/ 2 точки – стирка в стиральной машинке в воде средней температуры, такое обозначение можно встретить на ярлычках на одежде из синтетики или хлопка с пестрым набивным рисунком;
- 60 градусов/ 3 точки – стирка в стиральной машинке одежды и белья из однотонных натуральных тканей при температуре воды не более 60;
- 95 градусов – возможно кипячение, оптимально для изделий из хлопка и льна светлых тонов.
Если рисунок дополнен изображением руки, допускается только ручная стирка в воде комнатной температуры.
Современные стиральные машины предполагают возможность программирования не только режима стирки, но и отжима, т.е. машинной сушки. На ярлыках одежды можно найти предписания касательно и этой машинной процедуры. Как уже было описано ранее, для обозначения используется квадрат. Такой знак обозначает, что машинная сушка вещи разрешена, в случае перечеркнутого квадрата, этот вариант запрещен.
- 1 точка – низкие температуры при отжиме и сушке;
- 2 точки – средние температуры при отжиме и сушке;
- 3 точки – допускаются высокие температуры.
Если в квадрате изображены 3 вертикальные черты – допускается машинная сушка одежды или белья без выжимания, одна горизонтальная линия – только горизонтальная.
- 1 – глажка разрешена при низкой температуре до 110 градусов, как правило, для синтетических тканей;
- 2 – при температуре до 150 градусов, на такой температуре можно гладить изделия из натурального шелка или шерсти;
- 3 – до 200 градусов, допускается при отпаривании натуральных изделий из хлопка и льна.
Перечеркнутый утюг имеет запрещающее значение, значок в кружке обозначает возможность глажки при температуре до 140 градусов изделий из шерсти.
Значок в виде треугольника означает, что использование средств для отбеливания вещей разрешено, перечеркнутый значок соответственно обозначает, что такой вариант запрещен. Встречаются также треугольники с латинскими буквами cl внутри, что означает: можно применять вещества с содержанием хлора при отбеливании. Использовать подобные вещества нельзя, если треугольник дополнен двумя полосками, параллельными левому ребру треугольника.
Вещи, предназначенные для профессиональной чистки, как правило, нельзя стирать. При этом дополнительно могут быть ограничения по допустимым вариантам чистки. Если на бирке изображен кружок, возможна сухая химчистка. Перечеркнутый кружок обозначает, что любой вид чистки запрещен. Чистка с любым растворителем разрешена, если в кружке буква «А» (легко запомнить по ассоциации со словом «all»). Возможны и другие варианты допустимых к применению средств:
- «P» – углеводород, хлорный этилен, монофлотрихлорметан;
- «H» – углеводород , трифлотрихлорметан.
Если при этом кружок подчеркнут, это означает, необходимо применять щадящие условия при использовании вышеперечисленных средств.
Правила ухода
Выяснив, как стирать одежду из мембраны, стоит знать, что существует ряд правил, касающихся ее сушки, глажки и последующего ухода.
Сушка
Вещи из такой ткани нельзя отжимать в машинке и выкручивать руками, так как это может привести к нарушению свойств мембраны и микроразрывам. Сразу после стирки изделие требуется повесить на плечики над большой емкостью (ванной, тазом), чтобы с него стекла вода. Но держать его в вертикальном положении до полного высыхания не рекомендуется.
Предмет гардероба следует разложить горизонтально, поместив под него несколько слоев гигроскопичной ткани (махровое полотенце, простыню). Рекомендуется сразу же убрать все складки и разровнять вмятины.
Мембранную одежду нельзя размещать на батарее (другом источнике тепла), в непосредственной близости от нее и под прямыми солнечными лучами. В помещении должно быть достаточно тепло и не слишком влажно. Кроме того, нужно обеспечить свободную циркуляцию воздуха. Некоторые изделия из мембранной ткани можно сушить в электросушилке, работающей в щадящем режиме.
Глажка
По поводу глажки мембранных вещей подходы разнятся. Одни специалисты говорят, что любая температурная обработка повреждает мембрану, а значит, использование утюга противопоказано. Другие утверждают, что гладить такую одежду можно, но особым образом: следует разместить сверху куртки или брюк махровое полотенце, сложенное в несколько слоев, и выставить утюг на минимальную температуру. Таким же образом можно ускорить высыхание влажной одежды.
Уход
Уход за мембранной одеждой включает периодическое нанесение пропитки. Это необходимо для поддержания свойств материала, так как защитный состав, которым он был обработан в момент производства, постепенно вытирается и выстирывается. В результате одежда теряет устойчивость к влаге.
Пропитки выпускаются в виде аэрозолей и жидких средств. В первом случае необходимо распылить препарат на ткань, а во втором – прополоскать вещь в приготовленном растворе. Предмет гардероба должен быть предварительно очищен. После такой обработки может немного измениться оттенок изделия.
Как часто следует использовать пропитку? Идеальный вариант – после каждой стирки. Если нет такой возможности, препарат стоит применить тогда, когда ткань начинает терять свои характеристики.
Мембранная технология – уникальная разработка, позволяющая выпускать легкую, непромокаемую, теплую и удобную верхнюю одежду. При правильном уходе такие вещи способны прослужить длительное время. Не стоит стирать их слишком часто. При небольших загрязнениях лучше проводить сухую чистку
Если возникла необходимость в стирке, важно следовать рекомендациям производителя. Во время хранения мембранных вещей лучше использовать специальные мешки или пакеты, чтобы защитить их от пыли
Поделиться
Класснуть
Поделиться
Твитнуть
Запинить
DRY не просто принцип для педантов
Сегодня даже джин может быть DRY!
DRY — это не то, что вам стоит уважать только в своём коде. Не нужно повторять знания в каждом аспекте вашего проекта. Снова процитирую Дэйва Томаса: «Понятие «знания» в системе охватывает далеко не только код. Оно относится и к схемам баз данных, планам тестирования, системе сборки и даже документации».
Суть DRY проста: не нужно обновлять параллельно несколько вещей, если вносится какое-то изменение.
Если ваше знание дважды повторяется в коде, и вы забыли обновить одно представление, то возникнут баги. Это приведёт к заблуждениям и недоразумениям в документации, и к совершенно ошибочной реализации. И так далее, и тому подобное.
Все определения ADD
Акроним | Определение |
---|---|
ADD | Advanced Digital Design |
ADD | Airstream направление детектор |
ADD | Ataturkcu Dusunce Дернеги |
ADD | Автоматизированное проектирование и документация |
ADD | Автоматизированные распределительное устройство |
ADD | Аддис-Абеба, Эфиопия — боле |
ADD | Адрес |
ADD | Акустическая падение обнаружить |
ADD | Алгебраическое решение диаграмма |
ADD | Американцев с инвалидностью решений |
ADD | Аналоговый/цифровой/цифровой |
ADD | Аналоговых данных Decommutator |
ADD | Анг знакомств Даан |
ADD | Антидемпинговые пошлины |
ADD | Арифметика, разработали ежедневно |
ADD | Армия цифровой отдел |
ADD | Архитектурное определение документа |
ADD | Архитектурный дизайн документа |
ADD | Ассоциация pour le Développement Durable |
ADD | Атрибут инициативе дизайн |
ADD | Аудио день сон |
ADD | Аэрозольные распылители директива |
ADD | Буквенно-цифровой дисплей |
ADD | В смерти дверь |
ADD | Действий pour le Développement Durable |
ADD | Диагностический отдел Эбботт |
ADD | Дилеры цифровой |
ADD | Директор по развитию спортсмена |
ADD | Добавлена мощность для зрения вблизи |
ADD | Добавление |
ADD | Добавление или удаление дистрибьютор |
ADD | Документ описания архитектуры |
ADD | Документ подробно архитектура |
ADD | Дополнение |
ADD | Дополнительные |
ADD | Драйвер адаптера устройства |
ADD | Еще одна трагедия знакомства |
ADD | Каталог данных окружающей среды Арктики |
ADD | Накопленная степень дней |
ADD | Области развития района |
ADD | Определение автономного динамика |
ADD | Отдел сельскохозяйственного развития |
ADD | Отказ американской мечты |
ADD | Открытие дополнительных драйверов |
ADD | Плотность фактическая доставка |
ADD | Помощник заместителя директора |
ADD | Помощник окружного директора |
ADD | Приемлемые отсроченных дефект |
ADD | Принятие решений по проблемам инвалидности и развития |
ADD | Приобретение документа определения |
ADD | Проектирование архитектуры и разработка |
ADD | Район обороны воздуха |
ADD | Распределение документов |
ADD | Расстояние Среднее падение |
ADD | Расширенные подземелья и драконы |
ADD | |
ADD | Сельское хозяйство et Développement Durable |
ADD | Синдром дефицита внимания |
ADD | Словарь американский диалект |
ADD | Словарь данных армии |
ADD | Случайная смерть или расчленения |
ADD | Современных лекарств |
ADD | Средняя суточная доза |
ADD | Старение & инвалидности Департамента |
ADD | Уполномоченные производные Declassifier |
ADD | Уполномоченные развития отклонение |
ADD | Управление отклонениями |
ADD | Ускорение Driven демпфирования |
ADD | Устройство акустического обмана |
ADD | Устройство определения отношения |
ADD | назначить онлайн-диагностики |
DRY и дублирование кода
Так значит DRY относится к knowledge? К бизнес-логике?
Начнём с очевидного:
Этот код выглядит недурно, правда?
Однако Лёха, твой коллега-разработчик, с вами не согласится. Когда Лёха увидит этот код, подойдёт к вашему столу и возмутится:
- Слово повторяется 6 раз.
- Метод повторяется в интерфейсе, в реализации, и вызывается во время runtime.
Лёха — начинающий эксперт в вашей компании, и не имеет понятия об ООП.
Я прямо вижу, как вы, замечательный разработчик, смотрите на Лёху, словно опытный садовник на личинку, и отвечаете:
- Это переменная (и свойство), и вам нужно повторять её в коде.
- Однако логика (отображения цены) представлена однократно, в самом методе. Здесь не повторяется ни знание, ни алгоритм.
Здесь никак не нарушается принцип DRY. Лёха затыкается, подавленный вашей аурой величия, заполняющей комнату. Но вы поставили под сомнение его знания, и он злится. Лёха гуглит приницп DRY, находит другой пример вашего кода, возвращается и тычет вам в лицо:
Лёха торжествующе восклицает: «Ты олень! Этот код не соответствует DRY!». А вы, прочитав эту статью, отвечаете: «Но бизнес-логика и знание всё ещё не повторяются!»
Вы снова правы. Метод проверяет результат парсинга CSV только в одном месте (). Это знание, и оно не повторяется.
Но Лёха не готов смириться с поражением. «А что насчёт всех этих ? Разве это не очевидное нарушение DRY?». Вы контролируете свой голос, тщательно выговариваете каждое слово, и ваша мудрость отражается от стен, создавая эхо осознания: «Ну… нет. Это не нарушение. Я бы назвал это ненужным дублированием кода, а не нарушением принципа DRY».
Вы молниеносно набираете код:
Выглядит лучше, верно?
Подведём итог:
- Дублирование знания всегда является нарушением принципа DRY. Хотя можно представить ситуацию, когда это не так (напишите в комментах, если у вас тоже есть такие примеры).
- Дублирование кода не обязательно является нарушением принципа DRY.
Но Лёха ещё не убеждён. Со спокойствием высшего духовного наставника, вы ставите точку в споре: «Многие думают, что DRY запрещает дублировать код. Но это не так. Суть DRY гораздо глубже».
Кто это сказал? Дэйв Томас, один из авторов The Pragmatic Programmer, книги, в которой дано определение самого принципа DRY!
DRY это принцип
В начале своей карьеры я часто страдал от аналитического паралича. Все эти принципы не давали мне быть продуктивным и эффективным. Было слишком сложно, и я не хотел всё испортить.
Я хотел следовать каждой букве этих принципов, чтобы быть хорошим разработчиком.
Однако принципы — не правила. Они лишь инструменты, помогающие идти в правильном направлении.
В разработке у всего есть цена. И DRY не исключение. Очевидно, что не стоит везде повторять бизнес-логику, но также не нужно и тесно объединять всё подряд, экономя на абстракциях. Необходимо искать баланс, который зависит от текущей ситуации.
Вы можете помочь и перевести немного средств на развитие сайта
Не повторяйте свои знания
Хотя фраза «не повторяйся» звучит очень просто, в то же время она слишком общая.
В книге The Pragmatic Programmer принцип DRY определяется как «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы».
Всё замечательно, но… что такое «часть знания»?
Я бы определил это как любую часть предметной области бизнеса или алгоритма.
Если взять популярные аналогии из электронной коммерции, то класс и его поведение будут частью предметной области бизнеса вашего приложения. Отгрузка — это реальный процесс, используемый вашей компанией для отправки товара своим клиентам. Это часть бизнес-модели компании.
Следовательно, логика работы класса должна появляться в приложении однократно.
Причина очевидна: допустим, вам нужно отправить груз на склад. Для этого придётся активировать логику отгрузки в 76 разных местах приложения. Без проблем: вставляем логику 76 раз. Через некоторое время приходит начальник и просит кое-что изменить в логике: вместо одного склада компания теперь распределяет товары по трём складам. В результате вы потратите кучу времени на изменение логики, поскольку вам придётся сделать это в 76 местах! Совершенно впустую потраченное время, хороший источник багов и прекрасный способ выбесить начальство.
Решение? Создайте единственное представление вашего знания. Положите куда-нибудь логику отправки товара на склад, а затем используйте представление этого знания везде, где нужно. В ООП отправка груза может быть методом класса , который вы можете использовать по своему усмотрению.
Ещё один пример: допустим, вы пишете хитрый класс для парсинга В-деревьев. Его тоже можно считать знанием: это алгоритм, который должен быть определён однократно. А уже представление знания можно использовать где вашей душе угодно без повторения самого знания.
Применяем DRY везде рецепт катастрофы
Бесполезные абстракции
Возьмём более жизненный, интересный пример. Сейчас я работаю над приложением для компании, занимающейся производством фильмов. В него можно легко загружать сами фильмы и метаданные (заголовки, описания, титры…). Всё эта информация затем отображается в VoD-платформе. Приложение построено на основе паттерна MVC, и выглядит оно так:
Но создавать с помощью этого приложения контент могут не только съёмочные группы. К примеру, им может воспользоваться и команда по управлению контентом в моей компании. Почему? Некоторые съёмочные группы не хотят этим заниматься. У съёмочной команды и команда по управлению контентом совершенно разные потребности. Вторые работают с CMS, а первые — нет.
Поэтому мы решили создать два интерфейса. Один для команды управления контентом, без подсказок и объяснений, но позволяющий очень быстро добавлять контент. Второй интерфейс для съёмочной группы, объясняет всё, что нужно сделать, очень дружелюбный. Вот результат:
Выглядит как очевидное и уродливенькое нарушение принципа DRY: повторяются представления (view) и контроллер.
Другие решения? Можно было бы сгруппировать повторяющуюся логику с помощью своеобразной абстракции. Но тогда пришлось бы объединить контроллеры. Если изменится абстракция, то каждый контроллер должен будет поддерживать это изменение. Мы знали, что в большинстве случаев, в зависимости от использования, эти представления будут отображаться по-разному. Пришлось бы в действиях контроллеров создавать кучу , а мы этого не хотели. Код стал бы сложнее.
Более того, контроллеры не должны содержать в себе бизнес-логику. Если вспомните определение DRY, то это как раз знание, которое не стоит дублировать.
Иными словами, если пытаться везде применять DRY, то можно прийти к одному из двух:
- Ненужному объединению.
- Ненужной сложности.
Очевидно, что ни то, ни другое вам не улыбается.
Преждевременная оптимизация
Не стоит применять DRY, если ваша бизнес-логика ещё не содержит никаких дублирований. Конечно, всё зависит от ситуации, но, как показывает практика, если применять DRY к чему-то, что используется только один раз, то можно оказаться в ситуации преждевременной оптимизации.
Если вы начинаете что-то абстрагировать, потому что «позже это может понадобиться», то не делайте этого. Почему?
- Вы потратите время на абстрагирование того, что потом может быть никогда не востребовано. Бизнес-потребности могут изменять очень быстро и очень сильно.
- Повторюсь, вы можете привнести в код сложность и объединение ради… пшика.
Многократное использование кода и дублирование кода — разные вещи. DRY гласит, что не нужно дублировать знания, а не что нужно всегда делать код многократно используемым.
Сначала напишите код, отладьте его, а затем уже держите в уме все эти принципы (DRY, SOLID и прочие), чтобы эффективно рефакторить код. Работать с нарушением принципа DRY нужно тогда, когда знание уже дублировано.
Дублирование знания?
Помните, выше я говорил, что повторение бизнес-логики всегда является нарушением DRY? Очевидно, что это справедливо для ситуаций, когда повторяется одна и та же бизнес-логика.
Пример:
Вы уже слышите, как ваш коллега Лёха нежно вопит вам в ухо: «Это очевидное нарушение всего, во что я верю! А как же принцип DRY? У меня сердце сжимается!».
Но Лёха снова ошибается. С точки зрения электронной коммерции, время доставки товара покупателю () не имеет отношения к сроку возврата товара покупателем ().
Это две разные функциональности. То, что выглядит дублированием кода, на самом деле чистое совпадение. Что произойдёт, если вы объедините два метода в один? Если ваша компания решит, что покупатель теперь может вернуть товар в течение месяца, то вам снова придётся разделить метод. Ведь если этого не сделать, то срок доставки товара тоже будет составлять один месяц!
А это не лучший способ завоевать лояльность клиентов.