これは主に意見に基づいていますが、とにかく2pを入力します。
私がいつもやってきたことは、自分のコードがそれがするべきことをするために必要な知識の最小量は何であるかを自問することです?
私のコードがからのコードのみを使用する場合、 依存関係としてOther team's libraryのみ含めますOther team's library。
私のコードもからのコードを使用している場合はThird-party library、それも含めます。
のは、私から次のクラスを持っていたとしましょうMy Library、Other LibraryとThird-party Library(私は例のコードは、Javaを使用します)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}
の中に Other Library
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}
の中に Third-party library
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}
私のコードはからのコードFooのみに依存しているため、私が関心をotherlibrary持っているのはそれだけです。私はotherlibrary.Bar#doBarそれが何をするにしても気にしません、ただそれをやりたいです。
ただし、次のように、何かをotherlibrary.Bar#doBarするためにa Bazを受け入れるように変更した場合
public void doBar(Baz baz) {
baz.doBaz();
}
その後mylibrary.Foo#doFoo、次のようなものに変更する必要があります
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}
私は今、どのように興味を持っていますのでBar#doBar、そのことを行うために起こっている、と私のコードが必要と知ってBaz、私はそれが何をしたいのかやって、私は私には、ライブラリを明示する必要があります。
私のコードがライブラリ内の内容について知る必要がある場合、依存関係として含める必要があります。thirdparty
おそらく著者はBarこれらの詳細をもっと隠す必要があるので、thirdpartyライブラリを含める必要はありません...
thirdypartyバージョン4から始めてotherlibraryバージョン3が必要な場合、依存関係の地獄は常に問題になります。