#arch #note #solid4mens #solid
Общий принцип повторного использования - The Common Reuse Principle или CRP
❗️ Принцип совместного повторного использования (CRP) помогает определить, какие классы и модули должны быть включены в компонент. Он говорит, что классы и модули, которые используются вместе, должны быть включены в один компонент.
Также CRP указывает, какие классы не должны быть объединены. Когда один компонент использует другой, между ними возникает зависимость. Даже если использующему компоненту нужен только один класс из используемого, это не уменьшает зависимость. Поэтому, когда происходит изменение в используемом компоненте, обычно требуются соответствующие изменения в использующем компоненте.
Иногда, даже если в использующем компоненте ничего не меняется, его все равно нужно перекомпилировать, тестировать и развертывать заново.
❗️ Компонент не должен зависеть от того, что ему не требуется.
Общий принцип повторного использования - The Common Reuse Principle или CRP
Также CRP указывает, какие классы не должны быть объединены. Когда один компонент использует другой, между ними возникает зависимость. Даже если использующему компоненту нужен только один класс из используемого, это не уменьшает зависимость. Поэтому, когда происходит изменение в используемом компоненте, обычно требуются соответствующие изменения в использующем компоненте.
Иногда, даже если в использующем компоненте ничего не меняется, его все равно нужно перекомпилировать, тестировать и развертывать заново.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
#arch #solid #note #solid4mens
Диаграмма противоречий для определения связности компонентов
Три принципа связности компонентов вступают в противоречие друг с другом:
1️⃣ Принципы эквивалентности повторного использования (REP) и согласованного изменения (CCP) являются включительными: оба стремятся сделать компоненты как можно крупнее.
2️⃣ Принцип повторного использования (CRP) — исключительный, стремящийся сделать компоненты как можно мельче. Задача хорошего архитектора — разрешить это противоречие.
Диаграмма противоречий, показывающая, как три принципа связности влияют друг на друга. Ребра на диаграмме описывают цену нарушения принципа на противоположной вершине.
❗️ Архитектор, уделяющий внимание только принципам REP и CRP, обнаружит, что простое изменение вовлекает слишком большое количество компонентов. С другой стороны, архитектор, уделяющий особое внимание принципам CCP и REP, вынужден будет выпускать слишком много ненужных версий.
❗️ Хороший архитектор найдет в этом треугольнике противоречий золотую середину, отвечающую текущим нуждам разработчиков, а также подумает об изменениях, которые могут произойти в будущем. Например, на ранних этапах разработки проекта принцип CCP намного важнее, чем REP, удобство разработки важнее удобства повторного использования.
Вообще говоря, в начале разработки наибольшую важность имеет правая сторона треугольника, когда единственной жертвой является повторное использование. Но по мере развития и интеграции в другие проекты фокус начинает смещаться влево. То есть организация компонентов в проекте может изменяться с течением времени. Это больше связано с тем, как проект разрабатывается и используется, нежели с тем, что фактически этот проект делает.
Диаграмма противоречий для определения связности компонентов
Три принципа связности компонентов вступают в противоречие друг с другом:
Диаграмма противоречий, показывающая, как три принципа связности влияют друг на друга. Ребра на диаграмме описывают цену нарушения принципа на противоположной вершине.
Вообще говоря, в начале разработки наибольшую важность имеет правая сторона треугольника, когда единственной жертвой является повторное использование. Но по мере развития и интеграции в другие проекты фокус начинает смещаться влево. То есть организация компонентов в проекте может изменяться с течением времени. Это больше связано с тем, как проект разрабатывается и используется, нежели с тем, что фактически этот проект делает.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2🤯2