La page MSDNByRef
et les ByVal
mots clés ne sont pas très utiles; à moins que je ne l'aie ignoré, ils sont simplement appelés "mots clés" partout.
L'un des principaux contributeurs du projet Rubberduck travaille sur un refactoring Encapsulate Field très cool , et l'interface utilisateur se déroule plutôt bien .. sauf que j'ai un problème avec l'étiquette au-dessus de la liste déroulante pour ByRef
/ ByVal
, qui dit "Accessibilité":
Je n'aime pas "l'accessibilité" car je l'utilise ailleurs pour les modificateurs Public
/ Private
/ Friend
access où cela semble plus précis.
Je ne veux pas utiliser "Modifier" parce que l'OMI c'est juste un raccourci pour "modifier l'accès".
J'aimerais que cette étiquette soit exacte, mais mon vocabulaire fait apparemment défaut et je ne sais pas comment appeler ces mots clés.
Que doit dire cette étiquette, pour être précis? Quel est le mot que je recherche? À quelle «famille de mots clés» appartient ByRef
/ ByVal
appartient?
ByVal
sans possibilité de le changer enByRef
autre que l'édition manuelle du code généré, et "problème résolu"! VBA peut compiler une énorme quantité de bêtises diaboliques, vous savez :-) encore, j'aime qu'il y ait enfin un endroit en ligne qui donne un nom à ces mots clés.Réponses:
Dans ce cas, j'utiliserais "Pass As" (ou "Pass").
Vous avez un flux qui correspond parfaitement à cette utilisation.
Cela correspond parfaitement à votre flux de travail et est d'ailleurs exactement ce que l'article que vous référencez indique.
Lorsque vous lisez vos options, il se lit parfaitement lorsque vous utilisez 'Passer comme' car vous pouvez simplement lire l'intitulé et sélectionner le texte de manière appropriée - "'Nom de variable' foo, valeur 'Passer comme'."
Si vous souhaitez améliorer légèrement la lecture, vous pouvez rendre vos options de liste "Valeur" et "Référence" selon que votre public cible est des programmeurs VBA ou non VBA qui peuvent être un peu moins familiers avec les mots clés ByVal et ByRef.
Ou bien, changez-le en "Pass:" et faites-le "By Reference (ByRef)" et "By Value (ByVal)" dans la liste déroulante. Il semble que votre liste déroulante ait l'espace pour afficher tout ce texte. Ou tout simplement les mots clés ByRef / ByVal.
la source
J'utiliserais l'un de ces 3 termes pour étiqueter une liste déroulante en sélectionnant:
la source
"Pass By Semantics" est probablement le plus proche de ce que vous recherchez.
la source
Le terme le plus exact et le plus formel pour cela serait "Aliasing semantics".
Lorsque
ByRef
est utilisé, le nom à l'intérieur de la fonction est un alias pour la variable de l'appelant - toutes les modifications apportées à l'une ou l'autre sont immédiatement visibles pour l'autre. AvecByVal
, le nom à l'intérieur de la fonction est une copie distincte de la variable de l'appelant (bien sûr, la copie de l'appelant et de la fonction peut faire référence au même objet, mais elles sont distinctes en ce sens que la réaffectation du paramètre à l'intérieur de la fonction ne réaffecte pas la variable de l'appelant ).Les options seraient
ByRef
)ByVal
)Certaines plates-formes ajoutent une troisième possibilité, où l'alias de la variable de l'appelant est effectué mais il n'est pas permis pour plus d'un paramètre d'alias les objets qui se chevauchent. (L'idée derrière le
restrict
mot-clé C , on la retrouve également dans IDL, où se trouve le mot-clé attributunique
). .NET n'a pas un bon moyen de coder ces connaissances.la source
Je l'appellerais une "catégorie [d'argument]".
L'argument a un nom, un type et une catégorie.
la source