У меня есть 2 небольшие библиотеки (буквально по 1 классу) оформленные как пакеты composer, они решают одинаковые задачи, просто разным подходом.
Без использования интерфейсов или абстракции, я их привел к единообразному API, и у меня прям руки чешутся написать для них интерфейс (вот такой вот реверс). Но писать одинаковые интерфейсы в разные репозитории - как-то совесть не позволяет.
Насколько это целесообразно под один интерфейс выделять целый пакет (возможно, composer.json будет больше весить чем файл с интерфейсом)? Есть более красивые решения, без объединения репозиториев?
Ответ
Подойдите к вопросу практически.
Будет ли кто-нибудь использовать обе ваши либы одновременно?
Если ваш ответ нет, то не заставляйте програмеров выкачивать сложные иерархии либ только чтобы сыкономить на одном файле. Мне нравятся либы без зависимостей, с ними мало проблем. Так как они сами по себе то никакие зависимости сломатся не могут, гемороя по минимуму. Тогда и в интерфейсе смысла не очень то много, это фиктивная абстракция которая никому не нужна.
Если ваш ответ да, то смысла в трех пакетах ради двух классов и одного интерфеса вообще ноль. Если кому-то нужны две либы сразу, а они такие маленькие, то зачем вообще делить то? Пусть будет одна со всеми функциями сразу.
Вот если бы ваши либы были дико сложными, с кучей кода, разными зависимостями, если бы использовались обе сразу, то тогда можно устраивать сложную иерархию пакетов, будет практический смысл.
Короче, не делайте простое сложно, код красивей не станет.
Комментариев нет:
Отправить комментарий