Я думаю, это в основном основано на мнении, но я все равно добавлю свой 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. Что вы, ребята, делаете с этим?