Ini sebagian besar berdasarkan pendapat saya pikir, tapi saya akan tetap menggunakan 2p saya.
Cara saya selalu melakukannya adalah dengan bertanya pada diri sendiri, berapa jumlah minimum pengetahuan yang harus dimiliki kode saya untuk melakukan apa yang seharusnya dilakukan?
Jika kode saya hanya menggunakan kode dari Other team's library
, maka saya hanya akan menyertakan Other team's library
sebagai ketergantungan.
Jika kode saya juga menggunakan kode dari Third-party library
, maka saya akan memasukkannya juga.
Katakanlah saya memiliki kelas berikut dari My Library
, Other Library
, dan Third-party Library
(saya akan menggunakan Java untuk kode contoh)
package mylibrary;
import otherlibrary.Bar;
public class Foo {
public void doFoo() {
Bar bar = new Bar();
bar.doBar();
}
}
Dalam Other Library
package otherlibrary;
import thirdparty.Baz;
public class Bar {
public void doBar() {
Baz baz = new Baz();
baz.doSomething();
}
}
Dalam Third-party library
package thirdparty;
public class Baz {
public void doBaz() {
System.out.println("baz");
}
}
Karena kode saya Foo
hanya bergantung pada kode otherlibrary
, itu saja yang akan saya sertakan, karena hanya itu yang saya pedulikan. Saya tidak peduli bagaimana caranya otherlibrary.Bar#doBar
, saya hanya ingin melakukannya.
Namun jika, kami mengubah otherlibrary.Bar#doBar
untuk menerima Baz
untuk melakukan sesuatu dengan, seperti
public void doBar(Baz baz) {
baz.doBaz();
}
Saya kemudian perlu mengubah mylibrary.Foo#doFoo
ke sesuatu seperti
public void doFoo() {
Bar bar = new Bar();
Baz baz = new Baz();
bar.doBar(baz);
}
Karena saya sekarang tertarik pada bagaimana Bar#doBar
akan melakukan hal itu, dan kode saya perlu tahu tentang Baz
melakukan apa yang saya inginkan, saya perlu secara eksplisit tentang perpustakaan yang saya sertakan.
Jika kode saya harus tahu tentang hal-hal dalam thirdparty
perpustakaan, maka saya harus memasukkannya sebagai ketergantungan.
Meskipun mungkin penulis Bar
harus menyembunyikan lebih banyak detail itu jadi saya tidak perlu memasukkan thirdparty
perpustakaan ...
thirdyparty
versi 4 danotherlibrary
membutuhkan versi 3. Apa yang kalian lakukan?