C'est sûr que pour écrire des tests c'est mieux. Mais tu veux faire des optimisations, tu te retrouves parfois avec 5 couches d'abstraction super-testable mais dont tu ne t'en sors plus. Alors certes, sur 95% des applications avec 100 utilisateurs, on ne verra pas ce problème.
++ yk Le 8 février 2011 09:58, Yannick Francois <[email protected]> a écrit : > Le 8 février 2011 09:15, Guillaume Betous > En farfouillant un peu, je > retrouve un conseil que j'avais déjà vu passer > > mais que je n'avais pas compris : "The Law of Demeter" [2][3], > traduisible > > en français par la "loi de moindre connaissance" (???), où une règle > > voudrait qu'un modèle doit se limiter à communiquer avec un modèle > > immédiatement associé, et non pas faire des "bonds" de modèle à modèle. > > > > > En fait on dit tout simplement la loi de Demeter > (http://fr.wikipedia.org/wiki/Loi_de_Demeter) > > > > En gros, on interdit "post.author.name", et on préfère écrire un wrapper > > (Rails nous facilite encore cette tâche avec les delegate) et donc taper > > post.author_name. > > > > On dit qu'il faut eviter la "navigation transitive". En fait, un > modèle ne doit pas connaitre l'architecture de l'application. C'est un > principe de base que l'on retrouve par exemple dans le bouquin Clean > Code > ( > http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882?tag=duckduckgo-d-20 > ) > > Le problème est justement dans ce que tu dis: " Mais je ne vois pas en > quoi ça change quoi que ce soit, tant que name est une méthode ou un > attribut du modèle author," Justement, l'objectif est de pouvoir > changer l'implémentation d'un modèle sans avoir à impacter les autres. > Au pire, tu apporteras une modification sur ces voisins, qui du coup > sont normalement dans la même zone du Domaine métier que tu manipules. > > Après, c'est sur que sur une application de la taille d'un blog, on en > ressent moins le besoin. Par contre dès que tu commences à faire un > truc un peu plus costaud, tu le sens bien. > > > J'ajouterais que dans le contexte d'une application plus grosse que > nous avons récupéré avec mes équipiers, on a identifier la navigation > transitive comme étant une gène énorme pour la mise en place de test > unitaire (encore des gens qui ne développe pas en TDD). > > J'espère que ça aide ta reflexion :-) > > -- > Yannick Francois > +33 683 785 716 > <http://kantena.com> > > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected]
