IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Utilité des accesseurs 'simplifiés' ?


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 67
    Points : 97
    Points
    97
    Par défaut Utilité des accesseurs 'simplifiés' ?
    Bonjour,

    Alors voilà, c'est tout simple.
    Autant je comprends que l'on puisse utiliser des get/set pour 'protéger' des variables membres, autant j'ai du mal à voir à quoi sert l'écriture simplifiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string Name { get;set;}
    pourquoi pas juste :

    ?

    le résultat est le même, non ?

    Je vois peut être un intérêt pour la sérialisation ?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le 1er est une propriété
    le 2ème est un champ (plus communément appelé variable)

    il y a en effet une différence sur la sérialisation, la sérialisation xml utilise les propriétés, la binaire utilise les variables
    le binding utilise les propriétés
    ...

    et par convention une variable publique ca ne devrait pas exister (mais ce n'est qu'une convention)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Une autre raison est éviter les "breaking change" (y'a un terme français pour ça ? )

    Imaginons que tu aies un attribut Name dans ton "modèle" ; tout bêtement tu fais un champ et tout se passe bien. Plus tard pour une nouvelle version du logiciel le client demande une validation de cet attribut (pas de valeur vide ou une longueur peu importe) tu te dis pas de problème ; et tu fais une propriété avec la validation adéquate sauf que passer d'un champ à une propriété c'est un breaking change ; tu as changé l'interface publique de ta classe et ceci peut avoir plusieurs conséquences (déjà en partie évoquées, serialisation ; reflection ; probablement des problèmes de versionning etc.)

    Maintenant si dès le départ on avait utilisé une propriété le problème ne se serait pas posé ; la 1ère version aurait une simple propriété auto-implémentée et la 2ème version aurait été une propriété avec des corps contenant la validation ; mais de l'extérieur, l'interface publique elle aurait toujours été la même : une propriété, la logique interne à celle-ci (simple ou avec du code) ne concerne pas celui qui l'utilise.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Une autre raison est éviter les "breaking change" (y'a un terme français pour ça ? )
    rupture quelque chose surement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Ambiguïté concernant l'utilité des accesseurs
    Par phenomeno dans le forum Général Java
    Réponses: 7
    Dernier message: 21/09/2009, 20h35
  2. Utilité des types OpenGL GLint, GLfloat, GLvoid, etc.
    Par Djakisback dans le forum OpenGL
    Réponses: 17
    Dernier message: 14/12/2005, 12h35
  3. Utilité des schemas sous Postgresql?
    Par sessime dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/03/2005, 15h45
  4. Utilité des logos Xiti ?
    Par KibitO dans le forum Evolutions du club
    Réponses: 5
    Dernier message: 20/02/2005, 17h42
  5. utilité des DbControl
    Par portu dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/07/2004, 05h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo