Myślę, że jest to w większości oparte na opiniach, ale i tak dodam 2p.
Zawsze tak robiłem, zadając sobie pytanie, jaka jest minimalna ilość wiedzy, jaką mój kod musi mieć, aby robić to, co powinien?
Jeśli mój kod używa tylko kodu z Other team's library
, to podam tylko Other team's library
jako zależność.
Jeśli mój kod również używa kodu z Third-party library
, to również go dołączę.
Powiedzmy, że miałem z następujących klas My Library
, Other Library
oraz Third-party Library
(użyję kodu Java na przykład)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}
w Other Library
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}
w Third-party library
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}
Ponieważ mój kod Foo
zależy tylko od kodu otherlibrary
, to wszystko, co bym zawarł, ponieważ to wszystko, na czym mi zależy. Nie obchodzi mnie, jak otherlibrary.Bar#doBar
to robi, po prostu chcę, żeby to zrobiło.
Jeśli jednak zmieniliśmy otherlibrary.Bar#doBar
opcję akceptowania, Baz
aby zrobić coś z, na przykład
public void doBar(Baz baz) {
baz.doBaz();
}
Musiałbym wtedy zmienić mylibrary.Foo#doFoo
na coś takiego
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}
Ponieważ jestem teraz zainteresowany tym, jak Bar#doBar
to zrobię, a mój kod musi wiedzieć, Baz
jak zrobić to, co chcę, muszę jasno powiedzieć o bibliotekach, które dołączam.
Jeśli mój kod musi wiedzieć o rzeczach w thirdparty
bibliotece, to musi obejmować go jako zależność.
Chociaż być może autor Bar
powinien ukryć więcej tych szczegółów, więc nie muszę dołączać thirdparty
biblioteki ...
thirdyparty
wersji 4 iotherlibrary
potrzebuję wersji 3. Co wy, ludzie, robicie z tym?