1 votes

Utiliser la valeur de la variable privée ou de la propriété réelle dans les fonctions de la classe ?

Lorsque vous faites référence à des propriétés de classe à partir d'une fonction de la classe, utilisez-vous la valeur de la propriété réelle ou la valeur de la variable privée ?

Quel est le meilleur moyen ? Pourquoi ?

public class

  private m_Foo as double

  public property Foo() as double
    get
      return m_Foo
    end get
    set(byval value as double)
      m_Foo = value
    end set
  end property

  public function bar() as double
    Dim x as double = 5 * m_Foo
    Dim y as double = 3 * Foo
  end function

end class

7voto

Aviad P. Points 9351

Personnellement, j'essaie d'utiliser l'accesseur get/set chaque fois que possible, pour éviter de me surprendre lorsque je modifie leur logique et que, soudain, les endroits où j'accède au champ privé ne fonctionnent pas comme prévu.

3voto

Adam Crossland Points 12310

Le code de la propriété peut contenir -- maintenant ou à l'avenir -- une logique qui renvoie une valeur différente ou définit une valeur différente selon l'état de l'objet. Il est logique d'utiliser la propriété.

1voto

Matt Greer Points 29401

Je préfère cette dernière. Si votre propriété renvoie simplement le champ, le compilateur optimisera vos appels à cette propriété. Et vous devez vous protéger contre vos propres modifications, comme tout le monde. Et si plus tard la propriété fait quelque chose au champ avant de le retourner, vous devrez mettre à jour tout votre code interne pour vous adapter.

1voto

Dmitri Nesteruk Points 7669

C'est probablement plus sûr (mais ce n'est pas mieux) d'utiliser la propriété juste au cas où vous ajouteriez d'autres get logique plus tard. Bien sûr, ajouter de la logique à get pour quelque chose qui, hier encore, était une propriété "ordinaire" n'est probablement pas une bonne idée.

1voto

Eric Lippert Points 300275

Deux choses.

Tout d'abord, il s'agit d'un duplicata de

http://stackoverflow.com/questions/586087/when-should-a-class-use-its-own-getters-setters-vs-accessing-the-members-directly

Deuxièmement, voici mon article du début de l'année sur un sujet étroitement lié :

http://blogs.msdn.com/ericlippert/archive/2009/01/14/automatic-vs-explicit-properties.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X