นี่คือความคิดเห็นส่วนใหญ่ที่ฉันคิด แต่ฉันจะใส่ 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ยอมรับการ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 คุณทำอะไรเกี่ยวกับเรื่องนี้?