2010-05-26 5 views
6

Quelle est la meilleure pratique pour appeler des membres/champs à partir d'une méthode privée et d'une méthode publique? La méthode privée doit-elle toujours appeler des champs privés ou doit-elle appeler les membres publics?Méthode Appel de membres ou de méthodes publics/privés Meilleure pratique - C# .NET

private string _name; 
public string Name 
{ 
    get {return _name; } 
    set { _name = value; } 
} 

public void DoSomething() 
{ 
    _doSomething(); 
} 


private void _doSomething() 
{ 
    _name.ToLower(); 
} 
+0

Voir aussi http://stackoverflow.com/questions/3310186/are-there-any-reasons-to-use-private-properties-in-c – nawfal

Répondre

11

Je préfère avoir tout le code passer par l'interface publique, il suffit de réduire le nombre de places dans le code qui donne accès au champ de support réel. Deux raisons sont

  • Simplifie le débogage; Si vous avez un problème où une valeur est modifiée ou renvoie une valeur inattendue, vous pouvez définir un point d'arrêt à l'intérieur du getter ou du setter de propriété et intercepter facilement tout accès à la valeur.
  • Réduit l'impact des modifications, vous pouvez apporter des modifications au champ et il affectera très peu d'endroits dans le code directement.

Ou, pour le dire en un seul mot: encapsulation.

+0

+ lots pour "encapsulation". Comme l'a dit Steve McConnell dans Code Complete, sans encapsulation, vous n'avez pas non plus d'abstraction. –

1

Dans certains cas, votre propriété publique peut contenir une logique dont vous avez besoin et dans ce cas vous utiliserez toujours la propriété à la place de la variable locale, si vous êtes sûr de vouloir utiliser la variable membre privé et non cette fonctionnalité pour le monde extérieur, rendre cette méthode particulière privée.

Questions connexes