Является ли ортогональность обратно пропорциональной принципам DRY? - PullRequest
2 голосов
/ 25 февраля 2012

Согласно книге Pragmatic Programmer «Ортогональность тесно связана с принципом СУХОЙ».Я не уверен, понимаю ли я так, как хочет автор.Поэтому я задаю вопрос выше.

Например, у вас есть класс A и класс B. Оба класса имеют сходные методы.Используя принцип СУХОГО, я создал класс C, затем переместил аналогичные методы из класса A и класса B в класс C и назначил класс C в качестве родительского класса для A и B. Он стал не ортогональным?

1 Ответ

0 голосов
/ 02 марта 2014

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

Во-вторых, использование Hunt & Thomas'sТермин «ортогональность» сосредотачивается на разных модулях, а не на вопросах проектирования или реализации внутри модуля.Более конкретно, это связано с отсутствием взаимозависимости между модулями.Два модуля ортогональны, если изменения одного не влияют на другой.Более типично, « ортогональность » имеет другое значение (языковые функции могут комбинироваться произвольно, а не запрещать определенные функции в определенных контекстах или иметь разные версии одной и той же операции для разных типов), и выговорить о « сцеплении » (взаимозависимость между модулями, обратная «ортогональность» H & T) и « сцеплении ».

...