2015-09-13 2 views
1
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath(); 

où la loi de Déméter dit qu'une méthode f d'une classe C ne doit appeler les méthodes de ces:pourquoi le code suivant viole-t-il la Loi de Demeter?

  • C
  • Un objet créé par f
  • Un objet est passé comme argument à f
  • un objet tenu dans une variable d'instance de C
+0

Cela doit être à propos de la pire 'loi' que j'ai jamais vu ..:} Quoi qu'il en soit, ["un objet devrait éviter d'invoquer des méthodes d'un objet membre renvoyé par une autre méthode." (Https: // en. wikipedia.org/wiki/Law_of_Demeter). Comment éviter cette violation ou «améliorer» le code sans le rendre inutilement plus complexe ou simplement pousser la violation ailleurs .. Je n'en ai aucune idée. – user2864740

Répondre

0

appel getScratchDir() sur l'instance de la classe Options est la violation ici. Maintenant, pour améliorer l'architecture, nous devons en savoir plus sur ce que le code tente de faire. La méthode pourrait-elle être déplacée dans la classe CTxt?