C'est principalement basé sur l'opinion, je pense, mais je vais quand même mettre mon 2p.
La façon dont je l'ai toujours fait est de me demander quel est le minimum de connaissances dont mon code a besoin pour faire ce qu'il est censé faire?
Si mon code utilise uniquement le code de Other team's library, je n'inclurai Other team's libraryque comme dépendance.
Si mon code utilise également le code de Third-party library, je l'inclurai également.
Disons que j'avais les classes suivantes de My Library, Other Libraryet Third-party Library(je vais utiliser Java pour l'exemple de code)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}
dans le Other Library
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}
dans le Third-party library
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}
Parce que mon code Foone dépend que du code de otherlibrary, c'est tout ce que j'inclurais, car c'est tout ce qui m'importe. Peu m'importe comment otherlibrary.Bar#doBarfait quoi que ce soit, je veux juste qu'il le fasse.
Si cependant, nous avons changé le otherlibrary.Bar#doBarpour accepter un Bazpour faire quelque chose avec, comme
public void doBar(Baz baz) {
baz.doBaz();
}
Je devrais alors changer mylibrary.Foo#doFoopour quelque chose comme
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}
Parce que je suis maintenant intéressé par comment Bar#doBarva faire son truc, et que mon code doit savoir Bazfaire ce que je veux qu'il fasse, je dois être explicite sur les bibliothèques que j'inclus.
Si mon code doit connaître les éléments de la thirdpartybibliothèque, je dois l' inclure comme dépendance.
Bien que l'auteur de Bardevrait peut-être cacher plus de ces détails, je n'ai pas besoin d'inclure la thirdpartybibliothèque ...
thirdypartyversion 4 et que j'aiotherlibrarybesoin de la version 3. Que faites-vous à ce sujet?