2010-11-18 2 views
1

Предположим: ваши сухие чувства непогрешимы. Повторное поведение в вашем коде отвлекает вас; это гвозди на доске.Неужели DRY безошибочно ведет вас на путь праведности шаблона ООП?

Вопрос: Сохраняет ли DRY в авангарде вашего разума гарантию, что вы заметите, когда вам нужно искать шаблон дизайна?

Похоже, что введение в дизайн шаблонов, которые я видел, работает вокруг якобы «необходимости» для повторения кода. Это правда ООП?

Возможно, более простой вопрос: Есть ли когда-нибудь время, когда сухой приведет вас от шаблонов проектирования ООП?

ответ

4

ИМХО, что зависит от конкретного рисунка. Если у вас есть шаблоны GoF: многие из них направлены на «разделение проблем». Выделяя особую озабоченность, например создание объекта (Factory pattern) или клонирование объектов (шаблон Prototype), вы добавите эту часть своего кода, относящуюся к этой проблеме, в центральное место, делая код более DRY.

Другие шаблоны GoF, такие как Flyweight или Proxy, имеют разную природу, они нацелены на более высокую эффективность или меньшую сложность. Эти шаблоны в основном ортогональны принципу DRY.

+0

Спасибо, это иллюстрирует то, что казалось сложным вопросом. В суровых простых выражениях DRY приведет один к шаблонам GoF, но только подмножество из них. – MushinNoShin

4

DRY и ООП являются ортогональными. DRY следует практиковать независимо от того, кодируется ли язык OO или нет. Имейте в виду, что DRY не просто применяется к коду.

+0

Я не вижу, как DRY и OOP (в частности, шаблоны проектирования) являются огональными. Возможно, я должен был бы отметить это как шаблоны дизайна. Возможно, еще один способ сформулировать этот вопрос: «Могут ли все шаблоны проектирования быть уменьшены до методов, чтобы избежать необходимости повторного повторного кода» – MushinNoShin

+0

@MushinNoShin: Как я уже объяснил, DRY - это принцип, который следует выполнять независимо от того, кодируется ли оно язык OO и, кроме того, он не просто применяется к коду (он применяется к схеме базы данных, документации, системам сборки и т. д.). – jason

+0

Правильно, но предложение о том, имеет ли предложение, я могу применить к ООП-кодированию. Таким образом, кажется, что исходный вопрос все еще стоит. Я спрашиваю о DRY в этом конкретном контексте под эгидой OO с интересом к тому, как он взаимодействует с шаблонами дизайна. – MushinNoShin

0

Зачем думать о СУХОЙ, приводят вас от шаблонов проектирования ООП. Шаблоны проектирования там, чтобы вы не повторяли ошибок, которые другие делали много раз, и придумывают решения для конкретной проблемы. Таким образом, ни один DRY не ведет вас от шаблонов проектирования ООП.

3

Как отмечают другие, DRY и ООП являются ортогональными понятиями. Окончательное доказательство того, что DRY не ведет вас от шаблонов проектирования ООП, заключается в том, что вы можете применять DRY при использовании языков, которые включают (некоторые из) шаблоны проектирования ООП сами по себе.