ทำ"ยอมรับส่วนเชื่อมต่อ"พัก deprecation tooling?

0

คำถาม

Deprecation

คนสนับสนุนทางของสัญลักษณ์นั้นฟังก์ชันเป็น deprecated อะไรบางอย่างเหมือนนี้:

type MyStruct struct {
}

// MyFunc returns hello
// Deprecated: Use YourFunc
func (m MyStruct) MyFunc() string {
  return "hello"
}

ทันสมัย IDEs จะทำตัวเน้นมี usages ขอฟังก์ชันนี้และ linters อาจจะเลี้ยงการแจ้งเตือน(ฉันยังไม่ได้เรื่องส่วนตัวเลือกนี้)

Showing the IDE highlight

ยอมรับส่วนเชื่อมต่อ. กลับมา structs.

เป็นที่นิยมที่ดีที่สุด practise คือ"ยอมรับส่วนเชื่อมต่อ. กลับมา structs." -ซึ่งดื่มเพื่อสนับสนุนเต็มออกแบบซอฟต์แวร์

อย่างไรก็ตามที่ตามกฎ-ซึ่งตามนี้ที่ดีที่สุด practise-conceals ที่ deprecation คำเตือน:


// MyInterface specifies a single function that we require from a dependency
type MyInterface interface {
    MyFunc() string
}

func main() {

    var v MyInterface
    v = MyStruct{}
    v.MyFunc()

}

Showing the lack of IDE highlighting

คำถาม

มันมีแนวทางแก้ปัญหานี้?

ถ้าฉันเป็นตัวอย่างเช่นห้องสมุดผู้ดูแลยังไงฉันแน่ใจว่าของฉัน deprecation การแจ้งเตือนเป็นเห็นมาโดยผู้ใช้ของห้องสมุดเป็นใครก็ตามที่ดีที่สุดประดิษฐ์งานและ defining ของตัวเองการขึ้นแก่กันส่วนเชื่อมต่อ.

1

คำตอบที่ดีที่สุด

3

นั่นดูเหมือนเหตุผลตั้งแต่วิธีการของส่วนติดต่อไม่ได้ถูก deprecated. เพิ่มค Deprecated: บอกเพื่อนส่วนติดต่อฟังก์ชันอาจจะช่วยในกรณีนี้(ไม่ได้ทดสอบตั้งแต่ VSCode ไม่ได้ทำเรื่องนี้ยัง).

// MyInterface specifies a single function that we require from a dependency
type MyInterface interface {
    // Deprecated: use YourFunc
    MyFunc() string
}

ในกรณีนี้เพราะคนส่วนติดต่อเพียงมี 1 ฟังก์ชันคุณควรจะ deprecated เรื่องทั้งหมด. ซึ่งฉันรู้คือการรองรับโดย godoc/pkg.ไปแล้วdev เอา Queryer สำหรับตัวอย่าง

// MyInterface specifies a single function that we require from a dependency
// Deprecated: use YourInterface
type MyInterface interface {
    MyFunc() string
}
2021-11-22 21:18:36

หนึ่งในแกนหลักของ facets ของคำถามก็คือ"อย่างที่ห้องสมุดผู้ดูแลอย่างฉันยืนยันของฉัน deprecation สังเกตเห็นก็คือเห็นได้จากจุดจบใช้?" ห้องสมุดผู้ดูแลไม่มีทางควบคุมคนของผู้ใช้ส่วนติดต่อความหมายของคำดังนั้นพวกเขาไม่สามารถติดต่ออยู่และเพิ่ม deprecation การแจ้งเตือนนั้น
Brad Johnson

ดูเหมือนมันแปลกกับผมที่ห้องสมุดให้เป็น struct และผู้ใช้ให้เป็นส่วนติดต่อซึ่ง struct ของห้องสมุด implements. ถ้านี่เป็นสถานการณ์คุณเป็นกังวลเรื่องมันคงจะฉลาดต้อง deprecate ของคุณทั้ง struct ซึ่งควรควรจะเป็นสาเหตุของ v = MyStruct{} ต้องกลายเป็น stricken ผ่าน
caveman

"มันดูเหมือนว่าแปลกกับผมที่ห้องสมุดให้เป็น struct และผู้ใช้ให้เป็นส่วนติดต่อ..."นั่นไม่ใช่สิ่งที่คนส่วนติดต่อ segregation กฏของ encourages?
Brad Johnson

เท่าที่ฉันรู้,คนส่วนติดต่อ-segregation นตามหลักทฤษฎีก็คือเรื่องบุกใหญ่ส่วนเชื่อมต่อไปเล็กลง interfeaces เหมือน"ที่ยิ่งใหญ่ที่ส่วนติดต่อมากเท่าไหร่ยิ่งอ่อนแอมากเท่าที่ name=ดึงดูดใจ description."ไปสุภาษิต. ฉันคิดว่าการขึ้นแก่กัน inversion กฏของมากกว่าที่เล่นอยู่ที่นี่ คุณปกติแล้วต้องการใช้ส่วนเชื่อมต่อเป็นพารามิเตอร์ดังนั้นจริงๆ implementation ได้ถูกสับเปลี่ยนออกมา ดังนั้นมันเป็นเหตุผลที่จะกำหนดเป็นส่วนติดต่อในกล่องและใช้มันเป็นข้อมูล แต่ฉันไม่รู้ว่าอะไรเหมือนกันใช้กรณีที่ผู้ใช้ของเป็นห่อของกำหนการส่วนเชื่อมต่อที่ห้องสมุด struct implicitly implements.
caveman

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่