Questo è principalmente basato sull'opinione, penso, ma inserirò comunque il mio 2p.
Il modo in cui l'ho sempre fatto è chiedermi: qual è la quantità minima di conoscenza che il mio codice deve avere per fare ciò che dovrebbe fare?
Se il mio codice utilizza solo il codice da Other team's library
, includerò solo Other team's library
come dipendenza.
Se il mio codice anche utilizza codice da Third-party library
, allora sarò includerlo pure.
Diciamo che ho avuto le seguenti classi di My Library
, Other Library
e Third-party Library
(userò Java per il codice di esempio)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}
Nel Other Library
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}
Nel Third-party library
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}
Poiché il mio codice Foo
dipende solo dal codice di otherlibrary
, questo è tutto ciò che vorrei includere, perché è tutto ciò che mi interessa. Non mi interessa come otherlibrary.Bar#doBar
fa qualunque cosa faccia, voglio solo che lo faccia.
Se tuttavia, abbiamo cambiato il otherlibrary.Bar#doBar
per accettare un Baz
per fare qualcosa con, come
public void doBar(Baz baz) {
baz.doBaz();
}
Avrei quindi bisogno di passare mylibrary.Foo#doFoo
a qualcosa di simile
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}
Dato che ora sono interessato a come Bar#doBar
fare, e il mio codice deve sapere Baz
cosa fare per fare ciò che voglio, devo essere esplicito sulle librerie che includo.
Se il mio codice deve sapere di cose all'interno della thirdparty
libreria, quindi mi devo includerlo come una dipendenza.
Anche se forse l'autore di Bar
dovrebbe nascondere più di quei dettagli, quindi non ho bisogno di includere la thirdparty
biblioteca ...
thirdyparty
versione 4 e hootherlibrary
bisogno della versione 3. Cosa fate voi gente?