La loi de Déméter stipule ce qui suit:
- Chaque unité ne devrait avoir qu'une connaissance limitée des autres unités: seules les unités "étroitement" liées à l'unité actuelle.
- Chaque unité ne devrait parler qu'à ses amis; ne parlez pas à des étrangers.
- Ne parlez qu'à vos amis immédiats.
C # 6.0 a introduit un nouvel opérateur appelé opérateur conditionnel nul . À mon humble avis, il facilite le codage et améliore la lisibilité. Mais cela facilite également l'écriture de code couplé, car il est plus facile de parcourir les champs de classe, en vérifiant déjà la nullité (quelque chose comme var x = A?.B?.C?.D?.E?.F?
).
Est-il exact de dire que ce nouvel opérateur va à l'encontre de la loi de Déméter?
X.Y.Z.W.U
est une violation de la "loi". Mais, dans mon expérience avec le code, 90% du temps, il s'agit simplement de code couplé laid.
.?
plus LoD que constitue une violation +
ou -
fait.
A?.B?.C?.D?.E?.F?
cela le violerait - LoD ne concerne pas le nombre de points et si la méthode appelante possède de telles informations sur la structure qui ne sont pas en violation avec ses points, un tel appel serait parfaitement acceptable. Qu'un tel code puisse violer LoD ne suffit pas à dire que toutes les utilisations de celui -ci violent LoD.