Question

Public Class FooBar
{
    private int _foo;

    public int Foo { 
        get { return _foo; }
        set { _foo = value; }
    }

    public void DoStuff()
    {
        _foo++; // Do this?
        Foo++; // Or this?
    }
}

Existe-t-il une pratique plus acceptée consistant à accéder aux champs ou aux propriétés (s’il en existe une) dans une classe? J'ai toujours eu l'habitude d'accéder au champ, mais depuis que je fais WPF, qui contient beaucoup d'INotifyPropertyChanged, j'ai eu besoin d'accéder à la propriété pour que la notification soit modifiée. Alors, j’ai maintenant un mélange d’accès à la fois au champ et à la propriété dans toutes mes classes et, du point de vue du compilateur, peu importe, stylistiquement et avec beaucoup de lisibilité, c’est ... maladroit.

Était-ce utile?

La solution

Il est certain que l'accès à la propriété n'a pas de sens (par exemple, si vous implémentiez la propriété elle-même). En mettant ces cas de côté, je choisirais le style de propriété par défaut (à moins d’avoir une raison précise de ne pas le faire). L'accès au champ via la propriété dirigera toutes les modifications dans un seul chemin de code, ce qui facilitera la modification de l'implémentation et du débogage et réduira le risque d'erreur

Autres conseils

Cela dépend en grande partie du style personnel. Ici, il n’ya pas de bonne ou de mauvaise réponse à 100%.

Je préfère parcourir la propriété à chaque fois pour plusieurs raisons

  • Facilite le débogage car vous pouvez casser l'accès à la propriété et voir tous les get / set de la valeur. Pas possible avec un champ
  • Cohérence: dans certains cas, tels que les propriétés automatiques, il n’est pas possible d’accéder directement au champ de sauvegarde. En parcourant la propriété à chaque fois, le même code accède à la même valeur.
  • Performances: les propriétés simples sont probables dans le JIT, de sorte que le problème de performances est généralement un point muet.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top