• [^] # Re: java ?

    Posté par . En réponse au journal Lutter contre l'overengineering. Évalué à 7. Dernière modification le 24 mai 2016 à 08:44.

    les accesseurs, c'est tout simplement génial d'un point de vue maintenabilité du code

    Ouais, mais non, pas en Java. Les guetter and setter n'encapsulent rien dans 90% des cas, ils sont justes auto générés et retournent la valeur, point. C'est du bruit, et ca masque le vrai code, celui qui est pas généré par une regex.
    Pour les appelant, ça fait une montagne de code en plus (foo.bar est plus sympa à lire que foo.getBar(), et me lance pas sur is vs get pour les boolean vs Boolean).
    Surtout sur des créations/copies d'objets ou t'assignes 10 fields d'affilée.

    Tu met des properties privées, et des getter/setter qui retourne les valeur, et c'est cool t'es oriente objet parce que t'accedes pas aux champs directement.
    Tu peux faire la même chose avec des properties, des vrais, avec un gain de lisibilité certain.

    Le fait que tout soit une fonction a aussi tendance à cacher le fait qu'un getter peut avoir un side effect/être cher à calculer, et ca c'est mal. si t'as un side effect notable, ça devrait être une fonction, pas get/set.

    Exemple enswift, langage décent avec des vrai properties (il me semble que c# à un truc du genre aussi, mais je connais pas assez pour dire).

    public class foo {
     var bar: String
    }
    

    2 jours plus tard, faut faire qq chose quand bar est change:

    public class foo {
     var bar: String{
     didSet {
     print("zomfgwtfbbq")
     }
     }
    }
    

    Les appelants ont un code clair et lisible, et toi tu gardes ta souplesse.