ฉันกำลังวางแผนที่จะพูดคุยเกี่ยวกับการพึ่งพาการฉีดและภาชนะบรรจุ IoC และฉันกำลังมองหาข้อโต้แย้งที่ดีสำหรับการใช้งาน
ประโยชน์ที่สำคัญที่สุดของการใช้เทคนิคนี้และเครื่องมือเหล่านี้คืออะไร
ฉันกำลังวางแผนที่จะพูดคุยเกี่ยวกับการพึ่งพาการฉีดและภาชนะบรรจุ IoC และฉันกำลังมองหาข้อโต้แย้งที่ดีสำหรับการใช้งาน
ประโยชน์ที่สำคัญที่สุดของการใช้เทคนิคนี้และเครื่องมือเหล่านี้คืออะไร
คำตอบ:
สิ่งที่สำคัญที่สุดสำหรับผมคือการทำให้มันง่ายที่จะปฏิบัติตามหลักการ Single รับผิดชอบ
DI / IoC ทำให้มันง่ายสำหรับฉันในการจัดการการพึ่งพาระหว่างวัตถุ ในทางกลับกันมันทำให้ฉันง่ายขึ้นที่จะแยกการทำงานที่สอดคล้องกันออกเป็นสัญญาของตัวเอง (อินเทอร์เฟซ) เป็นผลให้รหัสของฉันได้รับการทำให้เป็นโมดูลมากขึ้นตั้งแต่ฉันได้เรียนรู้จาก DI / IoC
ผลของการทำเช่นนี้คือฉันสามารถเห็นการออกแบบที่รองรับหลักการเปิด - ปิดได้ง่ายขึ้น นี่เป็นหนึ่งในเทคนิคที่สร้างแรงบันดาลใจให้เกิดความมั่นใจมากที่สุด (ที่สองจากการทดสอบอัตโนมัติ) ฉันสงสัยว่าฉันสามารถกระตุ้นคุณธรรมของหลักการแบบเปิดได้เพียงพอ
DI / IoC เป็นหนึ่งในสองสามสิ่งในอาชีพการเขียนโปรแกรมของฉันที่เป็น "ตัวเปลี่ยนเกม" มีช่องว่างขนาดใหญ่ระหว่างโค้ดที่ฉันเขียนก่อน & หลังการเรียนรู้ DI / IoC ขอผมเน้นอีกหน่อย ขนาดใหญ่ปรับปรุงคุณภาพรหัส
ตัวอย่างที่เปิดตาของฉันได้เห็นว่ามันเป็นไปได้อย่างง่ายดายในการทดสอบหน่วยวัตถุที่สร้างขึ้นในแบบนั้น ก่อนหน้านั้นฉันมีปัญหาในการพยายามแยกวัตถุสำหรับการทดสอบหน่วย ฉันมักจะเขียนการทดสอบเพื่อโต้ตอบกับระบบที่มีขนาดใหญ่กว่ามาก นี่เป็นเรื่องยากจริงๆเพราะระบบโดยรวมนั้นสามารถคาดการณ์ได้น้อยกว่ามากและมีแนวโน้มที่จะเปลี่ยนแปลงจากนั้นองค์ประกอบส่วนบุคคล
ข้อดีของการฉีดพึ่งพาคือ:
ฉันคิดว่าผลประโยชน์ที่เกิดขึ้นจริงเป็นเรื่องทางการเมืองมากกว่าทางเทคนิค DI เป็นเพียงทางเลือกให้กับรูปแบบService Locatorไม่มีอะไรเพิ่มเติม โดยตัวมันเองมันไม่ได้ทำให้ง่ายขึ้นในการทำตามหลักการเช่น SRP หรือ OCP หรือเพื่อแยกชั้น ผู้ตอบแบบสอบถามอื่น ๆ ที่นี่กำลังสับสนแนวคิดและเทคนิคที่แตกต่างกัน IMO
คุณสามารถบรรลุเป้าหมายเดียวกันด้วยความเคารพต่อการทำงานร่วมกันสูงและการมีเพศสัมพันธ์ต่ำโดยใช้ Service locators หรือเพียงแค่สร้างอินสแตนซ์ของการพึ่งพาโดยตรงทันทีเมื่อใดก็ตามที่เกี่ยวข้อง (ซึ่งเป็นส่วนใหญ่)
ตอนนี้ฉันรู้ว่าหลายคนจะไม่เห็นด้วยกับความคิดเห็นนี้ ฉันยินดีที่จะพูดคุยตัวอย่างที่เป็นรูปธรรม
เมื่อใช้ DI เพื่อแสดงวัตถุภายในเพื่อจุดประสงค์ในการทดสอบรูปแบบจะถูกใช้งานอย่างไม่เหมาะสม