Các Luật của Demeter nói những điều sau đây:
- Mỗi đơn vị chỉ nên có kiến thức hạn chế về các đơn vị khác: chỉ các đơn vị "chặt chẽ" liên quan đến đơn vị hiện tại.
- Mỗi đơn vị chỉ nên nói chuyện với bạn bè của mình; đừng nói chuyện với người lạ.
- Chỉ nói chuyện với bạn bè ngay lập tức của bạn.
C # 6.0 đã giới thiệu một toán tử mới gọi là toán tử có điều kiện null . IMHO, nó làm cho mã hóa dễ dàng hơn và cải thiện khả năng đọc. Nhưng nó cũng làm cho việc viết mã được ghép dễ dàng hơn, vì nó dễ dàng điều hướng qua các trường lớp hơn, đã kiểm tra tính vô hiệu (đại loại như var x = A?.B?.C?.D?.E?.F?
).
Có đúng không khi tuyên bố rằng nhà điều hành mới này đi ngược lại Luật Demeter?
X.Y.Z.W.U
là vi phạm "luật". Nhưng, theo kinh nghiệm của tôi khi xử lý mã, 90% thời gian chỉ là mã được ghép xấu xí.
.?
có nhiều vi phạm LoD hơn +
hoặc -
không.
A?.B?.C?.D?.E?.F?
sẽ vi phạm nó - LoD không phải là về bao nhiêu dấu chấm và nếu phương thức gọi có thông tin như vậy về cấu trúc không vi phạm với các điểm của nó, thì một cuộc gọi như vậy sẽ hoàn toàn chấp nhận được. Mã đó có thể vi phạm LoD không đủ để nói rằng tất cả các sử dụng của nó đều vi phạm LoD.