5
การทดสอบหน่วยในโลก“ ไม่มีตัวตั้ง”
ฉันไม่คิดว่าตัวเองเป็นผู้เชี่ยวชาญ DDD แต่ในฐานะสถาปนิกโซลูชันพยายามใช้แนวทางปฏิบัติที่ดีที่สุดเท่าที่จะทำได้ ฉันรู้ว่ามีการถกเถียงกันอย่างมากมายเกี่ยวกับ "สไตล์" setter ของมือโปรและผู้ต่อต้านใน DDD และฉันสามารถเห็นการโต้แย้งทั้งสองด้าน ปัญหาของฉันคือฉันทำงานเป็นทีมที่มีทักษะความรู้และประสบการณ์ที่หลากหลายซึ่งหมายความว่าฉันไม่สามารถไว้วางใจได้ว่านักพัฒนาทุกคนจะทำสิ่งที่ "ถูกต้อง" ตัวอย่างเช่นหากวัตถุโดเมนของเราได้รับการออกแบบเพื่อให้การเปลี่ยนแปลงสถานะภายในของวัตถุดำเนินการโดยวิธีการ แต่ให้ผู้ตั้งค่าทรัพย์สินสาธารณะบางคนจะหลีกเลี่ยงไม่ได้ตั้งค่าคุณสมบัติแทนการเรียกวิธีการ ใช้ตัวอย่างนี้: public class MyClass { public Boolean IsPublished { get { return PublishDate != null; } } public DateTime? PublishDate { get; set; } public void Publish() { if (IsPublished) throw new InvalidOperationException("Already published."); PublishDate = DateTime.Today; …