Предположим, у нас есть программный модуль A, который реализует функцию F. Другой модуль B реализует ту же функцию, что и F '.
Есть несколько способов избавиться от дубликата кода:
- Пусть A использует F 'из B.
- Пусть B использует F из A.
- Поместите F в его собственный модуль C и позвольте A и B использовать его.
Все эти параметры создают дополнительные зависимости между модулями. Они применяют принцип СУХОЙ за счет увеличения сцепления.
Насколько я вижу, при применении СУХОГО сцепление всегда увеличивается или в аренду перемещается на более высокий уровень. Кажется, существует конфликт между двумя из самых основных принципов разработки программного обеспечения.
(На самом деле я не нахожу удивительным, что есть такие конфликты. Вероятно, это и делает создание хорошего программного обеспечения таким сложным. Я нахожу удивительным, что эти конфликты обычно не рассматриваются во вводных текстах.)
Изменить (для пояснения): я предполагаю, что равенство F и F 'не просто совпадение. Если F нужно будет изменить, F ', вероятно, придется изменить таким же образом.