• [^] # Re: Chacun son style

    Posté par (site web personnel) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 3.

    Si je design une voiture en POO (l'exemple est un peu éculé, j'en suis désolé), ce qui m'intéresse c'est de la faire avancer, pas qu'elle ait 4 roues.
    J'achèterai jamais ta voiture si tu ne t'assures pas que je puisse changer les roues : si tu me dis que les roues sont directement soudées sur l'arbre de transmission parcque t'avais oublié de mettre une interface de type écrou...

    Par exemple, les getter et setter vont à l'encontre de la Loi_de_Déméter W
    Bien au contraire ! Exposer des membres directement sans getter/setter, c'est exposer toutes les hypothèses de ton implémentation aux objets qui utilisent le tient. Hors ce que dit la loi, je cite :

    "La notion fondamentale est qu'un objet devrait faire aussi peu d'hypothèses que possible à propos de la structure de quoi que ce soit d'autre, y compris ses propres sous-composants."

    La seule façon de s'assurer que tu ne puisses pas faire d'hypothèse sur la structure d'un objet, c'est d'en cacher tous les détails d'implémentation, et un membre exposé directement sans getter/setter, c'est exactement ça.

    "Un désavantage de la règle de Déméter est qu'elle requiert l'écriture d'un grand nombre de petites méthodes "wrapper" pour propager les appels de méthodes à leurs composants. "

    En gros cette loi conduit au contraire à écrire encore plus de getter/setter :
    Au lieu d'écrire :
    obj.getVoiture().getFirstRoue()
    tu te retrouves à ajouter à ton obj un autre getter :
    obj.getFirstRoueFromVoiture()