แจ้งให้ทราบว่าฉันเป็นแฟนตัวยงของการฉีด (DI) และการทดสอบอัตโนมัติ ฉันสามารถพูดได้ทั้งวันเกี่ยวกับเรื่องนี้
พื้นหลัง
เมื่อเร็ว ๆ นี้ทีมงานของเราเพิ่งได้รับโครงการขนาดใหญ่ที่จะสร้างขึ้นใหม่ทั้งหมด มันเป็นแอปพลิเคชั่นเชิงกลยุทธ์ที่มีความต้องการทางธุรกิจที่ซับซ้อน แน่นอนฉันต้องการให้มันดีและสะอาดซึ่งสำหรับฉันหมายถึง: บำรุงรักษาและทดสอบได้ ดังนั้นฉันต้องการใช้ DI
ความต้านทาน
ปัญหาเกิดขึ้นในทีมของเรา DI คือข้อห้าม มันถูกนำขึ้นมาสองสามครั้ง แต่พระเจ้าไม่เห็นด้วย แต่นั่นก็ไม่ได้ทำให้ฉันท้อแท้
ย้ายของฉัน
สิ่งนี้อาจฟังดูแปลก แต่ห้องสมุดบุคคลที่สามมักไม่ได้รับการอนุมัติจากทีมสถาปนิกของเรา (คิดว่า: "อย่าพูดถึงUnity , Ninject , NHibernate , MoqหรือNUnitเพื่อมิให้ฉันตัดนิ้ว" ดังนั้นแทนที่จะใช้คอนเทนเนอร์ DI ที่สร้างไว้ฉันจึงเขียนคอนเทนเนอร์ที่แสนง่าย โดยทั่วไปจะเชื่อมโยงการพึ่งพาทั้งหมดของคุณเมื่อเริ่มต้นใช้งานฉีดการพึ่งพาใด ๆ (คอนสตรัคเตอร์ / คุณสมบัติ) และกำจัดวัตถุที่ใช้แล้วทิ้งใด ๆ ที่ส่วนท้ายของคำขอเว็บ มันเบามากและทำในสิ่งที่เราต้องการ จากนั้นฉันก็ขอให้พวกเขาทบทวนมัน
การตอบสนอง
ดีที่จะทำให้มันสั้น ฉันได้พบกับการต่อต้านอย่างหนัก อาร์กิวเมนต์หลักคือ "เราไม่จำเป็นต้องเพิ่มความซับซ้อนของเลเยอร์นี้ลงในโครงการที่มีความซับซ้อนอยู่แล้ว" นอกจากนี้ "มันไม่เหมือนเราจะเสียบปลั๊กในการใช้งานที่แตกต่างกันของส่วนประกอบ" และ "เราต้องการทำให้มันเรียบง่ายถ้าเป็นไปได้แค่เก็บทุกอย่างไว้ในที่ประชุมเดียว DI เป็นความซับซ้อนที่ไม่มีใครทำและไม่มีประโยชน์"
ในที่สุดคำถามของฉัน
คุณจะรับมือกับสถานการณ์ของฉันได้อย่างไร ฉันไม่เก่งในการนำเสนอความคิดของฉันและฉันอยากจะรู้ว่าผู้คนจะเสนอข้อโต้แย้งของพวกเขาอย่างไร
แน่นอนฉันสมมติว่าเช่นฉันคุณชอบใช้ DI หากคุณไม่เห็นด้วยโปรดบอกว่าทำไมฉันจึงเห็นเหรียญอีกด้านหนึ่งได้ มันน่าสนใจมากที่ได้เห็นมุมมองของคนที่ไม่เห็นด้วย
ปรับปรุง
ขอบคุณสำหรับคำตอบของทุกคน มันทำให้สิ่งต่าง ๆ ในมุมมอง มันดีพอที่จะมีดวงตาอีกชุดหนึ่งที่จะให้ข้อเสนอแนะแก่คุณได้สิบห้าข้อนั้นยอดเยี่ยมจริงๆ! นี่เป็นคำตอบที่ดีมากและช่วยให้ฉันเห็นปัญหาจากด้านที่แตกต่างกัน แต่ฉันสามารถเลือกได้เพียงคำตอบเดียวดังนั้นฉันจะเลือกคะแนนที่โหวตสูงสุด ขอบคุณทุกคนที่สละเวลาตอบ
ฉันได้ตัดสินใจแล้วว่าอาจไม่ใช่เวลาที่ดีที่สุดในการติดตั้ง DI และเรายังไม่พร้อม แต่ฉันจะมุ่งเน้นความพยายามของฉันในการทำให้การออกแบบทดสอบและพยายามนำเสนอการทดสอบหน่วยอัตโนมัติ ฉันรู้ว่าการทดสอบการเขียนเป็นค่าใช้จ่ายเพิ่มเติมและหากมีการตัดสินใจว่าค่าใช้จ่ายเพิ่มเติมนั้นไม่คุ้มค่าโดยส่วนตัวฉันจะเห็นว่ามันเป็นสถานการณ์ที่ชนะเนื่องจากการออกแบบยังคงสามารถทดสอบได้ และหากเคยทดสอบหรือ DI เป็นตัวเลือกในอนาคตการออกแบบสามารถจัดการได้อย่างง่ายดาย