Дизайн программного обеспечения: разделение при сильной зависимости от сторонней библиотеки

Дизайн программного обеспечения: разделение при сильной зависимости от сторонней библиотеки
Дизайн программного обеспечения: разделение при сильной зависимости от сторонней библиотеки - clark_fransa @ Unsplash

что сцепление - это плохо и его следует избегать по мере возможности

Я думаю, что это слишком догматично.

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

В других случаях вы можете захотеть добавить уровень абстракции. Идея заключается в том, чтобы создать интерфейсы, представляющие необходимую функциональность, и реализовать их с помощью вашей библиотеки.

очень распространенной проблемой при таком подходе является утечка абстракций. Есть большая вероятность, что ваши интерфейсы будут очень похожи на библиотеку, от которой вы пытаетесь отделиться. И это, скорее всего, не позволит легко заменить библиотеку.

хорошо спроектированные интерфейсы, чтобы их можно было использовать с несколькими различными библиотеками, очень сложно, по крайней мере, для более сложных библиотек с большими API. Поэтому я бы рассмотрел вашу фактическую цель. Нужно ли облегчить тестирование? Или позволить заменить плагин на другую библиотеку?

Вы также можете рассмотреть риск, связанный с любой зависимостью. Является ли она с открытым исходным кодом? Есть ли у него активное сообщество? Можете ли вы самостоятельно исправить ошибку, если это необходимо? Есть ли возможные замены? Насколько сложной будет замена? Если это коммерческий продукт, является ли компания стабильной? Какие у них есть гарантии поддержки? Совместима ли лицензия с тем, что вы хотите делать?

рекомендации в интернете могут быть полезны, важно понимать, какую проблему они пытаются решить и когда они применимы.

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - Модульный PHP монолит как альтернатива микросервисной архитектуре - Юлия Николаева, iSpring

Прикрепленное видео 2 - Параллельное программирование: MPI (начало)

Прикрепленное видео 3 - Ресурсное обеспечение проекта и оценка рисков. Вебинар программы «Музей без границ»


LetsCodeIt, 25 января 2023 г., 20:58