กฎหมายของ Demeterกล่าวต่อไปนี้:
- แต่ละหน่วยควรมีความรู้ที่ จำกัด เฉพาะเกี่ยวกับหน่วยอื่น ๆ : เฉพาะหน่วย "อย่างใกล้ชิด" ที่เกี่ยวข้องกับหน่วยปัจจุบัน
- แต่ละหน่วยควรคุยกับเพื่อนเท่านั้น อย่าคุยกับคนแปลกหน้า
- พูดคุยกับเพื่อนของคุณทันที
C # 6.0 แนะนำผู้ประกอบการใหม่ที่เรียกว่าผู้ประกอบการ null เงื่อนไข IMHO ทำให้การเข้ารหัสง่ายขึ้นและปรับปรุงความสามารถในการอ่าน แต่มันยังทำให้ง่ายต่อการเขียนรหัสคู่มากขึ้นเนื่องจากง่ายต่อการเลื่อนดูฟิลด์คลาสและตรวจสอบค่าว่าง (เช่นvar x = A?.B?.C?.D?.E?.F?
)
ถูกต้องหรือไม่หากระบุว่าผู้ประกอบการรายใหม่นี้ขัดต่อกฎหมายของ Demeter
X.Y.Z.W.U
เป็นการละเมิด "กฎหมาย" แต่ในประสบการณ์ของฉันเกี่ยวกับรหัส 90% ของเวลามันเป็นเพียงรหัสคู่ที่น่าเกลียดธรรมดา
.?
ไม่มากละเมิด LoD กว่า+
หรือ-
ไม่
A?.B?.C?.D?.E?.F?
มันจะเป็นการละเมิด - LoD ไม่ได้เกี่ยวกับจำนวนจุดและถ้าวิธีการโทรมีข้อมูลเกี่ยวกับโครงสร้างที่ไม่ได้เป็นการละเมิดจุดนั้นการโทรนั้นจะเป็นที่ยอมรับอย่างสมบูรณ์ รหัสดังกล่าวอาจละเมิด LoD ไม่เพียงพอที่จะกล่าวได้ว่าการใช้งานทั้งหมดจะเป็นการละเมิด LoD