В основному, на мою думку, це ґрунтується на думці, але я все-таки вкладу свій 2p.
Я завжди робив це, запитуючи себе, який мінімальний обсяг знань повинен мати мій код для того, щоб його робити?
Якщо мій код використовує лише код від 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. Що ви робите з цього приводу?