Variables publics pour ou contre ?

 

Lorsque nous écrivons une DLL, nous sommes tous tentés d'utiliser des variables Publics qui serviront par exemple de propriétés.

Public MaPropriété as String

Cela pose plusieurs problèmes :

MaPropriété sera consultable par tous les programmes qui utilisent la DLL mais ça, c'est justement ce que l'on veut. Mais chaque programme pourrat aussi mettre à jour cette "propriété", et là les problémes commence car la DLL n'est pas en mesure de tester les valeurs fixées à MaPropriété, elle perd le contrôle sur MaPropriété.

MaDll.MaPropriété = 1 'Ce n'est pas un string mais ça va passer !!!!

Je n'ose même pas penser au conséquence si MaPropriété etait Static c'est à dire partagé par tous les programmes qui utilisent Ma DLL.

Pour éviter ce genre de problème nous utilisons généralement ceci :

Private p_MaPropriété as String

Public Property Get MaPropriété() As string
MaPropriété = p_MaPropriété
End Property

Public Property Let MaPropriété(valeur as String)
'Ajouter les testes ICI
p_MaPropriété = MaPropriété
End Property

Ainsi lorsque je fixe un valeur à MaPropriété, je peux ajouter tous les testes possibles, mais je peux aussi retirer la possibilité de mettre à jour MaPropriété (en retirant Public Property Let MaPropriété(valeur as String).....End Property)

Un conseil n'utilisez jamais de caractères accentués dans les nom de variables, méthodes, propriétés....