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 library
que 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 Library
et 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 Foo
ne 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#doBar
fait quoi que ce soit, je veux juste qu'il le fasse.
Si cependant, nous avons changé le otherlibrary.Bar#doBar
pour accepter un Baz
pour faire quelque chose avec, comme
public void doBar(Baz baz) {
baz.doBaz();
}
Je devrais alors changer mylibrary.Foo#doFoo
pour 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#doBar
va faire son truc, et que mon code doit savoir Baz
faire 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 thirdparty
bibliothèque, je dois l' inclure comme dépendance.
Bien que l'auteur de Bar
devrait peut-être cacher plus de ces détails, je n'ai pas besoin d'inclure la thirdparty
bibliothèque ...
thirdyparty
version 4 et que j'aiotherlibrary
besoin de la version 3. Que faites-vous à ce sujet?