วันนี้เรากำลังฝึกอบรม TDD และพบประเด็นต่อไปนี้ของความเข้าใจผิด
งานสำหรับอินพุต "1,2" ผลรวมของตัวเลขซึ่งคือ 3 สิ่งที่ฉันเขียน (ใน C #) คือ:
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
แต่คนอื่นชอบที่จะทำอย่างอื่น ก่อนอื่นสำหรับการป้อน "1,2" พวกเขาได้เพิ่มรหัสต่อไปนี้:
if (input == "1,2")
return 3;
จากนั้นพวกเขาแนะนำการทดสอบอีกหนึ่งครั้งสำหรับอินพุต "4,5" และการใช้งานที่เปลี่ยนแปลง:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
และหลังจากนั้นพวกเขาก็พูดว่า "โอเคตอนนี้เราเห็นรูปแบบแล้ว" และนำสิ่งที่ฉันทำไปใช้ในตอนแรก
ฉันคิดว่าวิธีที่สองนั้นเหมาะสมกับคำนิยาม TDD แต่ ... เราควรเข้มงวดกับเรื่องนี้หรือไม่? สำหรับฉันมันก็โอเคที่จะข้ามขั้นตอนทารกเล็กน้อยและรวมพวกเขาเป็น "twinsteps" ถ้าฉันแน่ใจว่าฉันจะไม่ข้ามอะไร ฉันผิดหรือเปล่า?
ปรับปรุง ฉันทำผิดพลาดโดยไม่ชี้แจงว่าไม่ใช่การทดสอบครั้งแรก มีการทดสอบอยู่แล้วดังนั้น "การคืน 3" จริงๆแล้วไม่ใช่รหัสที่ง่ายที่สุดในการตอบสนองความต้องการ