มีเหตุผลมากมาย Eric Lippert ได้ระบุหลายครั้งว่าเหตุผลที่feature X
ไม่อยู่ใน C # นั้นเป็นเพราะมันไม่ได้อยู่ในงบประมาณของพวกเขา นักออกแบบภาษาไม่มีเวลาและเงินในการใช้งานและคุณลักษณะใหม่แต่ละอย่างมีค่าใช้จ่ายในการบำรุงรักษาที่เกี่ยวข้อง การทำให้ภาษามีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้นั้นไม่ใช่เรื่องง่ายสำหรับนักออกแบบภาษา - มันก็ง่ายขึ้นสำหรับทุกคนที่เขียนการใช้งานและเครื่องมือทางเลือก (เช่น IDEs) นอกจากนี้เมื่อบางสิ่งถูกนำมาใช้ในแง่ของภาษา พกพาได้ฟรี หากการทดสอบหน่วยกำลังใช้งานเป็นห้องสมุดคุณจะต้องเขียนเพียงครั้งเดียวและมันจะทำงานในการปรับใช้ภาษาที่สอดคล้องกัน
มันน่าสังเกตว่า D จะมีการสนับสนุนไวยากรณ์ระดับสำหรับการทดสอบหน่วย ฉันไม่รู้ว่าทำไมพวกเขาถึงตัดสินใจโยนมันลงไป แต่มันก็คุ้มค่าที่จะสังเกตว่า D นั้นหมายถึงเป็น "ภาษาโปรแกรมระดับสูงของระบบ" ผู้ออกแบบต้องการให้ทำงานได้สำหรับรหัสระดับต่ำที่ไม่ปลอดภัย C ++ ที่ใช้กันมานานและความผิดพลาดในรหัสที่ไม่ปลอดภัยนั้นมีค่าใช้จ่ายสูงมาก - พฤติกรรมที่ไม่ได้กำหนด ดังนั้นฉันคิดว่ามันสมเหตุสมผลสำหรับพวกเขาที่จะใช้ความพยายามอย่างมากในสิ่งใดก็ตามที่ช่วยให้คุณตรวจสอบว่ามีรหัสที่ไม่ปลอดภัยทำงานอยู่หรือไม่ ตัวอย่างเช่นคุณสามารถบังคับใช้ได้เฉพาะโมดูลที่เชื่อถือได้เท่านั้นที่สามารถทำการดำเนินการที่ไม่ปลอดภัยเช่นการเข้าถึงอาร์เรย์ที่ไม่ได้ตรวจสอบหรือการคำนวณทางคณิตศาสตร์ของตัวชี้
การพัฒนาอย่างรวดเร็วก็มีความสำคัญสำหรับพวกเขาด้วยเช่นกันดังนั้นพวกเขาจึงทำให้มันเป็นเป้าหมายการออกแบบที่รหัส D รวบรวมเร็วพอที่จะทำให้มันใช้งานได้ในฐานะภาษาสคริปต์ การทดสอบหน่วยการทำขนมให้ตรงกับภาษาเพื่อให้คุณสามารถเรียกใช้การทดสอบของคุณได้โดยเพียงแค่ส่งค่าสถานะพิเศษไปยังคอมไพเลอร์ช่วยด้วย
อย่างไรก็ตามฉันคิดว่าไลบรารีการทดสอบหน่วยที่ยอดเยี่ยมนั้นทำอะไรได้มากกว่าเพียงแค่หาวิธีและรันมัน ยกตัวอย่างQuickCheckของ Haskell ซึ่งช่วยให้คุณทดสอบสิ่งต่างๆเช่น "สำหรับทุก x และ y f (x, y) == f (y, x)
" QuickCheck อธิบายได้ดีกว่าในฐานะเครื่องกำเนิดการทดสอบหน่วยและช่วยให้คุณสามารถทดสอบสิ่งต่าง ๆ ในระดับที่สูงกว่า "สำหรับอินพุตนี้ฉันคาดหวังเอาต์พุตนี้" QuickCheck และ Linq ไม่ได้มีความแตกต่างกัน - ทั้งสองเป็นภาษาเฉพาะโดเมน ดังนั้นแทนที่จะสนับสนุนการทดสอบหน่วยกับภาษาทำไมไม่เพิ่มคุณสมบัติที่จำเป็นในการทำให้ DSL ใช้งานได้จริง คุณจะจบลงด้วยการทดสอบหน่วยไม่เพียง แต่เป็นภาษาที่ดีกว่า