Я думаю, это в основном основано на мнении, но я все равно добавлю свой 2р.
Я всегда так делал, задавая себе вопрос: какой минимальный объем знаний должен иметь мой код , чтобы делать то, что должен делать?
Если мой код использует только код из Other team's library, то я буду включать только Other team's libraryв качестве зависимости.
Если мой код также использует код из Third-party library, то я также включу его.
Допустим, у меня были следующие классы от My Library, Other Libraryи Third-party Library(я буду использовать Java для примера кода)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}
в Other Library
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}
в Third-party library
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}
Поскольку мой код Fooзависит только от кода otherlibrary, это все, что я хотел бы включить, потому что это все, что меня волнует. Мне все равно, как otherlibrary.Bar#doBarэто происходит, я просто хочу, чтобы это было сделано.
Однако, если мы изменили, otherlibrary.Bar#doBarчтобы принять, Bazчтобы сделать что-то с, как
public void doBar(Baz baz) {
baz.doBaz();
}
Мне тогда нужно было бы перейти mylibrary.Foo#doFooна что-то вроде
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}
Поскольку меня сейчас интересует, как Bar#doBarэто будет происходить, и мой код должен знать Baz, что делать, что я хочу, я должен быть недвусмысленным в отношении библиотек, которые я включаю.
Если мой код должен знать о содержимом thirdpartyбиблиотеки, я должен включить его в качестве зависимости.
Хотя, возможно, автор Barдолжен скрыть больше этих деталей, поэтому мне не нужно включать thirdpartyбиблиотеку ...
thirdypartyверсии 4 иotherlibraryнуждаюсь в версии 3. Что вы, ребята, делаете с этим?