ฉันพยายามคลุมศีรษะด้วย TDD โดยเฉพาะในส่วนของการพัฒนา ฉันได้ดูหนังสือบางเล่ม แต่หนังสือที่ฉันพบส่วนใหญ่จัดการกับส่วนทดสอบ - ประวัติของ NUnit ทำไมการทดสอบจึงดี Red / Green / Refactor และวิธีการสร้างเครื่องคำนวณสตริง
สิ่งที่ดี แต่นั่นคือ "เพียงแค่" การทดสอบหน่วยไม่ใช่ TDD โดยเฉพาะฉันไม่เข้าใจว่า TDD ช่วยให้ฉันได้รับการออกแบบที่ดีได้อย่างไรถ้าฉันต้องการการออกแบบเพื่อเริ่มการทดสอบ
เพื่ออธิบายให้นึกภาพ 3 ข้อเหล่านี้:
- แคตตาล็อกต้องมีรายการผลิตภัณฑ์
- แค็ตตาล็อกควรจดจำผลิตภัณฑ์ที่ผู้ใช้ดู
- ผู้ใช้ควรสามารถค้นหาผลิตภัณฑ์ได้
ณ จุดนี้มีหนังสือหลายเล่มดึงกระต่ายเวทมนตร์ออกมาจากหมวกและกระโดดลงไปใน "การทดสอบบริการผลิตภัณฑ์" แต่พวกเขาไม่ได้อธิบายว่าพวกเขาสรุปได้อย่างไรว่ามีบริการผลิตภัณฑ์ในตอนแรก นั่นคือส่วน "การพัฒนา" ใน TDD ที่ฉันพยายามเข้าใจ
จำเป็นต้องมีการออกแบบที่มีอยู่ แต่สิ่งที่อยู่นอกบริการ - เอนทิตี้ (นั่นคือ: มีผลิตภัณฑ์ดังนั้นควรมี ProductService) ไม่พบ (เช่นข้อกำหนดที่สองต้องการให้ฉันมีแนวคิดบางอย่างของ ผู้ใช้ แต่ฉันจะใส่ฟังก์ชั่นการเตือนไว้ที่ไหนและค้นหาคุณสมบัติของ ProductService หรือ SearchService แยกกันฉันจะรู้ได้อย่างไรว่าควรเลือกแบบใด)
ตามSOLIDฉันต้องการ UserService แต่ถ้าฉันออกแบบระบบที่ไม่มี TDD ฉันอาจต้องใช้ Single-Method Services ทั้งหมด TDD ไม่ได้ตั้งใจจะทำให้ฉันค้นพบการออกแบบของฉันตั้งแต่แรก?
ฉันเป็นนักพัฒนา. net แต่ทรัพยากรของจาวาก็สามารถใช้ได้เช่นกัน ฉันรู้สึกว่าดูเหมือนจะไม่มีแอปพลิเคชันตัวอย่างจริงหรือหนังสือที่เกี่ยวข้องกับแอปพลิเคชันทางธุรกิจที่แท้จริง ใครสามารถให้ตัวอย่างที่ชัดเจนที่แสดงกระบวนการสร้างการออกแบบโดยใช้ TDD ได้หรือไม่?