Je vais poser une question bete. Et je suis pas sur de la réponse, mais on sais faire de l'aop sur un attribut? Si demain, suite aux évolutions, une erreur analytique ou le changement d'avis d'un client, je décide que mon objet est trop lourd et que je désire que ses attributs soient initialisé en lazyloading, je dois remanier tous le code qui utilise l'attribut directement? Pour reprendre l'exemple de la voiture. Si on imagine un attribut "moteur", toutes les voitures on un moteur, n'est-ce pas? Aujourd'hui mon client me dit "ha mais attention, pour voir le moteur on doit absolument avoir le capot ouvert!" Je fais comment avec un attribut pour gérer ça?
Je trouve que les getters/setters sont très pratique à utiliser, ne coutent pas plsu cher à développer que des attributs public et me laissent faire ce que je veux lors de l'accès (vérifer qu'on est bien dans un transaction, logguer l'accès si c'est une donnée confidentielle, vérifier que le capot est bien ouvert...) Certes dans 95% des cas mes getters se résume à un return. Mais les 5% ou j'ai besoin d'une évolution et ou j'ai besoin de revenir sur la propriété pour lui adjoindre un comportement suffisent largement à contrebalancer les 3 secondes que je met à cliquer dans mon IDE sur generate getters and setters.
Attention cependant, je n'ai pas dit que tout devait avoir des getters et encore moins des setters. Ce qui doit rester privé, reste privé. Mais j'estime plus propre et plus évolutif de faire directement les getters / setters quand l'info est public. Pour ce que ca coute.
Partager