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 librarycome 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 Librarye 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 Foodipende solo dal codice di otherlibrary, questo è tutto ciò che vorrei includere, perché è tutto ciò che mi interessa. Non mi interessa come otherlibrary.Bar#doBarfa qualunque cosa faccia, voglio solo che lo faccia.
Se tuttavia, abbiamo cambiato il otherlibrary.Bar#doBarper accettare un Bazper fare qualcosa con, come
public void doBar(Baz baz) {
baz.doBaz();
}
Avrei quindi bisogno di passare mylibrary.Foo#doFooa 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#doBarfare, e il mio codice deve sapere Bazcosa fare per fare ciò che voglio, devo essere esplicito sulle librerie che includo.
Se il mio codice deve sapere di cose all'interno della thirdpartylibreria, quindi mi devo includerlo come una dipendenza.
Anche se forse l'autore di Bardovrebbe nascondere più di quei dettagli, quindi non ho bisogno di includere la thirdpartybiblioteca ...
thirdypartyversione 4 e hootherlibrarybisogno della versione 3. Cosa fate voi gente?