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