La Ley de Deméter establece lo siguiente:
- Cada unidad debe tener un conocimiento limitado sobre otras unidades: solo unidades "estrechamente" relacionadas con la unidad actual.
- Cada unidad solo debe hablar con sus amigos; No hables con extraños.
- Solo habla con tus amigos inmediatos.
C # 6.0 introdujo un nuevo operador llamado operador condicional nulo . En mi humilde opinión, facilita la codificación y mejora la legibilidad. Pero también hace que sea más fácil escribir más código acoplado, ya que es más fácil navegar por los campos de clase, ya verificando la nulidad (algo así como var x = A?.B?.C?.D?.E?.F?).
¿Es correcto afirmar que este nuevo operador va en contra de la Ley de Demeter?
X.Y.Z.W.Uviolación de la "ley". Pero, en mi experiencia con el código, el 90% de las veces es un código simple y feo.
.?no viola más LoD que +o lo -hace.
A?.B?.C?.D?.E?.F?lo violaría? LoD no se trata de cuántos puntos y si el método de llamada tiene tal información sobre la estructura que no está en violación de sus puntos, tal llamada sería perfectamente aceptable. Que dicho código podría violar LdD no es suficiente decir que todos los usos de que hacer violan LdD.