ฉันกำลังเรียนรู้เกี่ยวกับสัญญารหัสใน. NET และฉันพยายามเข้าใจแนวคิดของผู้สร้างที่บริสุทธิ์ สัญญารหัสเอกสารฯ :
วิธีการทั้งหมดที่เรียกว่าภายในสัญญาจะต้องบริสุทธิ์ นั่นคือพวกเขาจะต้องไม่ปรับปรุงสถานะก่อนหน้าใด ๆ วิธีบริสุทธิ์ได้รับอนุญาตให้แก้ไขวัตถุที่สร้างขึ้นหลังจากเข้าสู่วิธีบริสุทธิ์
และPureAttribute
เอกสารประกอบฯ :
บ่งชี้ว่าชนิดหรือเมธอดนั้นบริสุทธิ์นั่นคือมันไม่ได้ทำการเปลี่ยนแปลงสถานะใด ๆ ที่มองเห็นได้
ฉันเข้าใจข้อความเหล่านี้เมื่อพูดถึงวิธีการ แต่สิ่งที่เกี่ยวกับตัวสร้าง สมมติว่าคุณมีชั้นเรียนเช่นนี้:
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
คอนสตรัคเตอร์นี้เห็นได้ชัดว่ามีผลต่อสถานะของFoo
วัตถุใหม่แต่ไม่มีผลข้างเคียงอื่น ๆ (เช่นมันไม่ได้ใช้พารามิเตอร์ใด ๆ หรือเรียกวิธีการที่ไม่บริสุทธิ์) เป็นผู้สมัคร[Pure]
หรือไม่? อะไรคือความสำคัญของการวางแอ[Pure]
ททริบิวต์ลงในคอนสตรัคเตอร์และเมื่อไหร่ที่ฉันควรทำสิ่งนี้ในโค้ดของตัวเอง?