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