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

0voto

KP. Points 8241

Souvent, la propriété contient une logique simple, ce qui peut vous empêcher d'accéder directement à la variable.

public class MyClass 
{

   private List<string> _someList;

   public List<string> SomeString
   {
      get
      {
         if(_someList == null)
            _someList = new List<string>();
         return _someList;
      }
   }

}

si vous accédez ensuite à _someList directement, vous risquez de vous heurter à une référence nulle. Accéder directement à la propriété permet de s'assurer qu'elle a été initialisée.

Certains diront que la variable privée aurait simplement dû être déclarée comme nouvelle en premier lieu, ou initialisée dans le constructeur plutôt que dans la propriété - mais cela devrait au moins mettre en évidence un problème possible car il s'agit d'une approche courante.

0voto

RMCornelissen Points 61

Utilisez le nom de la propriété. De cette façon, le reste du code de la classe peut fonctionner indépendamment de la façon dont vous choisissez d'implémenter cette propriété.

Peut-être voudrez-vous demain changer la variable privée à, disons, la moitié de sa valeur. Vous pourrez alors changer votre Get en "return 2 * m_HalfFoo" et votre ancien code continuera à fonctionner.

Avec le Set, c'est encore plus évident : vous pourriez valider la valeur à laquelle vous avez fixé votre variable à un moment donné. Utilisez la propriété Set partout et ne vous souciez pas de valider la valeur de cette propriété.

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