Prawo Demeter stwierdza co następuje:
- Każda jednostka powinna mieć ograniczoną wiedzę na temat innych jednostek: tylko jednostki „ściśle” związane z bieżącą jednostką.
- Każda jednostka powinna rozmawiać tylko z przyjaciółmi; nie rozmawiaj z nieznajomymi.
- Rozmawiaj tylko z najbliższymi przyjaciółmi.
W C # 6.0 wprowadzono nowy operator o nazwie operator null-warunkowy . IMHO ułatwia kodowanie i poprawia czytelność. Ale ułatwia także pisanie bardziej sprzężonego kodu, ponieważ łatwiej jest poruszać się po polach klas, sprawdzając już pod kątem nieważności (coś podobnego var x = A?.B?.C?.D?.E?.F?).
Czy słusznie jest stwierdzić, że ten nowy operator jest niezgodny z prawem Demetera?
X.Y.Z.W.Unaruszenie „prawa”. Ale z mojego doświadczenia związanego z kodem, 90% czasu jest po prostu brzydko sprzężonym kodem.
.?Nie więcej niż jest niezgodny LoD +czy -nie.
A?.B?.C?.D?.E?.F?by go naruszyło - LoD nie polega na tym, ile kropek i jeśli metoda wywołująca zawiera takie informacje o strukturze, która nie narusza jej punktów, takie wywołanie byłoby całkowicie akceptowalne. Że taki kod mogłoby naruszać LoD nie wystarczy powiedzieć, że wszystkie zastosowania nim zrobić naruszać LOD.