orfanik
Messages postés10Date d'inscriptiondimanche 16 mai 2010StatutMembreDernière intervention12 juillet 2010
-
16 mai 2010 à 09:16
orfanik
Messages postés10Date d'inscriptiondimanche 16 mai 2010StatutMembreDernière intervention12 juillet 2010
-
16 mai 2010 à 20:21
Je sais qu'en POO il est fortement conseillé d'avoir recours à des acceseurs (methodes get_VAR()) et des mutateurs (méthodes set_VAR()), j'ai vus ça en C++ et en Java , seulement voila quand j'ai regardé le tutoriel XNA pour C# le monsieur qui faisait sa video n'avait recours a aucune de ce genre de méthode et utilisait nomObjet.variable pour acceder ou modifier ses variables. C'était pourtant une video officielle du site de Microsoft.
Qu'en est-il reellement en C# ? Est-il plus conseillé d'utiliser ce genre de méthodes ou pas ? Et pourquoi dit-on qu'il est dangereux de ne pas faire en sorte que les variables d'une classe soient private ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 16 mai 2010 à 19:12
Bonjour,
"Et pourquoi dit-on qu'il est dangereux de ne pas faire en sorte que les variables d'une classe soient private ?"
Il est déconseillé d'exposer publiquement (dans le sens "accessible à l'extérieur de l'API") un champ qui n'est pas en lecture seule (donc ni const, ni readonly) car on ne dispose alors d'aucune possibilité de vérification de la valeur affectée, et aucun moyen d'être notifié du changement de valeur.
Une fois le champ exposé, il est difficile de le remplacer par une propriété car ce n'est pas forcément anodin pour les consommateurs de l'API.
C'est pourquoi il est en général conseillé de toujours passer par une propriété, et de laisser l'optimiseur de code se débrouiller (durant le JIT) pour que la présence d'un "get" ne faisant que retourner la valeur (ou référence) d'un champ soit éventuellement éléminée par inlining.