Il suffit de regarder le nom même... "Propriété". Que signifie-t-il ? Le dictionnaire le définit de plusieurs façons, mais dans ce cas, "un attribut ou une qualité essentielle ou distinctive d'une chose" est la meilleure définition.
Pensez à l'objectif de l'action. Modifiez-vous ou récupérez-vous en fait "un attribut essentiel ou distinctif" ? Dans votre exemple, vous utilisez une fonction pour définir une propriété d'une zone de texte. Cela semble un peu stupide, n'est-ce pas ?
Les propriétés sont vraiment des fonctions. Elles se résument toutes à getXXX() et setXXX(). Elles sont simplement cachées par du sucre syntaxique, mais c'est ce sucre qui donne un sens sémantique au processus.
Pensez aux propriétés comme à des attributs. Une voiture a de nombreux attributs. Couleur, MPG, modèle, etc. Toutes les propriétés ne sont pas paramétrables, certaines sont calculables.
En revanche, une Méthode est une action. GetColor devrait être une propriété. GetFile() doit être une fonction. Une autre règle empirique est que si elle ne change pas l'état de l'objet, elle doit être une fonction. Par exemple, CalculatePiToNthDigit(n) doit être une fonction, car elle ne modifie pas réellement l'état de l'objet Math auquel elle est attachée.
Je m'égare peut-être un peu, mais il s'agit en fait de décider quels sont vos objets et ce qu'ils représentent. Si vous n'arrivez pas à déterminer s'il doit s'agir d'une propriété ou d'une fonction, le choix n'a peut-être pas d'importance.
2 votes
-1 cette question a déjà été posée et répondue auparavant : stackoverflow.com/questions/164527/
0 votes
Les avantages et les inconvénients de la méthode/du champ/de la propriété peuvent donner lieu à de longs débats ; quelques utilisations générales des propriétés : lorsque vous voulez des champs privés/protégés mais que vous voulez en même temps les exposer. Une autre utilisation est d'avoir non seulement des déclarations mais aussi des expressions (actions si vous voulez) même
if()
(conformément à MSDN). Mais c'est délicat car l'utilisateur n'est pas toujours conscient du coût de traitement derrière l'accès à une variable (propriété) (c'est-à-dire que le code n'est pas disponible) et pour des raisons de rigueur, il faudrait évaluer la propriété. Oh, et un "bonus", vous ne pouvez pas utiliser de pointeurs avec les propriétés.0 votes
Malgré le -1 donné ci-dessus, j'ai trouvé ce fil plus enrichissant que l'autre... c'est ça le pouvoir du vote