โปรแกรมเมอร์ Python ไม่ได้ใช้ Dependency Inversion (DI) เพียงพอ มีสาเหตุหลายประการที่ทำให้ไม่:
- เป็นเรื่องที่ยุ่งยาก — พลิกกลับ ความเข้าใจตามสัญชาตญาณบางประการเกี่ยวกับการไหลของโค้ด
- บางครั้งผู้คนทำการ Dependency injection และคิดว่าพวกเขาได้ทำการ Dependency Inversion แล้ว
- คุณประโยชน์ของ DI นั้นมองเห็นได้ง่ายในโค้ดเบสที่พัฒนาแล้ว แต่การนำ DI ไปใช้กับโค้ดใหม่จะเพิ่มระดับของนามธรรมที่โปรแกรมเมอร์หลายคนรู้สึกว่ายุ่งยาก มันได้รับ "YAGNI" เมื่อไม่ควร
แต่การพึ่งพา Inversion DI สามารถบันทึกโค้ดที่คุณเขียนในวันนี้ไม่ให้ล้าสมัยใน 2 ปี
ยิ่งไปกว่านั้น Python ยังมีฟีเจอร์เนทิฟที่ยอดเยี่ยมที่เรียกว่า Entry Points (สนับสนุนโดย ส่วนใหญ่ บรรจุภัณฑ์ เครื่องมือ) ที่ช่วยให้คุณได้รับความสามารถในการขยายจำนวนมากจากการพึ่งพาการผกผัน อย่างง่ายดาย
นี่คือสิ่งที่ฉันวางแผนจะกล่าวถึงในโพสต์นี้:
- การผกผันการพึ่งพาคืออะไร (และมีลักษณะอย่างไรใน Python)
- จุดเข้าใช้งาน Python คืออะไร
- สองสิ่งนี้มารวมกันได้อย่างไร
หากคุณเป็น Dependency Inversion Champ และรู้สึกว่าคุณมีแนวทางที่ชัดเจนในแนวคิดนี้ (เข้าใจไหม) โปรดอ่านผ่านส่วน Entry Points ได้เลย
การผกผันการพึ่งพาคืออะไร?
คำจำกัดความ
มีคำจำกัดความมาตรฐานของหลักการ Dependency Inversion มันถูกต้องทุกประการ แต่เมื่อคุณเรียนรู้เกี่ยวกับ DI เป็นครั้งแรก คุณจะรู้สึกว่ามันเป็นความลับ ปล่อยให้มันออกไปให้พ้นทาง:
วัตถุระดับสูงไม่ควรขึ้นอยู่กับวัตถุระดับต่ำ ทั้งสองอย่างควรขึ้นอยู่กับนามธรรม
ฉันขอยืมมาจากโลกแห่งแนวคิดที่สร้างคำจำกัดความนั้นเพื่อให้คุณมีโลกที่แตกต่างแต่เข้ากันได้:
ตรรกะหลักของโค้ดของคุณควร กำหนด และ ใช้เฉพาะอินเทอร์เฟซที่ต้องการโต้ตอบด้วย
ตัวอย่างที่น่ารักในการเตรียมเรา
ตรรกะหลักของโค้ดคือส่วนที่กำหนด พิเศษ สิ่งที่คุณต้องการให้ซอฟต์แวร์ทำในแง่ของนามธรรมระดับสูง จำไว้ว่า มีมโค้ดไวรัลนี้ ล้อเล่นเกี่ยวกับวิธีที่พวกเขาจัดการไม่ให้โดรนพุ่งชนแต่ละ...