これは主に意見に基づいていますが、とにかく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が必要な場合、依存関係の地獄は常に問題になります。