ฉันได้ไตร่ตรองถึงวิธีการสร้างความสมดุลให้กับการออกแบบที่ทดสอบได้โดยใช้การฉีดแบบพึ่งพาและการให้ API สาธารณะคงที่แบบง่าย ขึ้นเขียงของฉันคือ: ผู้คนต้องการทำสิ่งที่ชอบvar server = new Server(){ ... }
และไม่ต้องกังวลเกี่ยวกับการสร้างการอ้างอิงจำนวนมากและกราฟของการอ้างอิงที่ a Server(,,,,,,)
อาจมี ในขณะที่กำลังพัฒนาฉันไม่ต้องกังวลมากเกินไปเพราะฉันใช้กรอบ IoC / DI เพื่อจัดการทุกอย่าง (ฉันไม่ได้ใช้แง่มุมการจัดการวงจรชีวิตของคอนเทนเนอร์ใด ๆ ซึ่งจะทำให้สิ่งต่าง ๆ ยุ่งยากมากขึ้น)
ตอนนี้การพึ่งพาไม่น่าจะนำมาใช้ใหม่ การแยกชิ้นส่วนในกรณีนี้เกือบหมดจดสำหรับการทดสอบ (และการออกแบบที่เหมาะสม!) แทนที่จะสร้างตะเข็บเพื่อขยาย ฯลฯ คนจะ 99.999% ของเวลาที่ต้องการใช้การกำหนดค่าเริ่มต้น ดังนั้น. ฉันสามารถ hardcode การอ้างอิง ไม่ต้องการทำอย่างนั้นเราแพ้การทดสอบของเรา! ฉันสามารถสร้างคอนสตรัคเตอร์เริ่มต้นพร้อมการอ้างอิงแบบฮาร์ดโค้ดและตัวอ้างอิงที่ขึ้นต่อกัน นั่นคือ ... ยุ่งและมีแนวโน้มที่จะสับสน แต่ทำงานได้ ฉันสามารถสร้างการพึ่งพาที่ได้รับภายในตัวสร้างและทำให้หน่วยของฉันทดสอบการชุมนุมเพื่อน (สมมติว่า C #) ซึ่งเป็นที่สาธารณะ API สาธารณะ แต่ทิ้งกับดักซ่อนน่ารังเกียจที่ซุ่มซ่อนสำหรับการบำรุงรักษา การมีคอนสตรัคเตอร์สองตัวที่เชื่อมต่อโดยนัยมากกว่าการออกแบบที่ไม่ดีโดยทั่วไปในหนังสือของฉัน
ในขณะนั้นเป็นสิ่งที่ชั่วร้ายที่สุดที่ฉันสามารถนึกได้ ความเห็น? ภูมิปัญญา?