Comment faire référence à ByRef et ByVal dans une étiquette déroulante? [fermé]


9

La page MSDNByRef et les ByValmots 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é":

Boîte de dialogue de refactorisation "Encapsuler le champ" de Rubberduck

Je n'aime pas "l'accessibilité" car je l'utilise ailleurs pour les modificateurs Public/ Private/ Friendaccess 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/ ByValappartient?


2
Comme l'un des commentaires le dit, cela ne devrait pas être là du tout - ByRef pour une propriété est un peu fou. Si c'est possible, c'est mauvais - vous permettant de modifier les variables des appelants à leur insu.
jmoreno

Beaucoup de documentation dans "l'univers VB", (donc pas spécifiquement VBA) semble y faire référence sous le nom de "mécanisme de passage".
Damien_The_Unbeliever

@jmoreno Je suis entièrement d'accord. Je vais le faire ByValsans possibilité de le changer en ByRefautre 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.
Mathieu Guindon

Réponses:


14

Dans ce cas, j'utiliserais "Pass As" (ou "Pass").

Vous avez un flux qui correspond parfaitement à cette utilisation.

  • Nom de variable : foo
  • Passer comme: ByVal / Passer: ByRef

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.


J'utiliserais "Pass as ByVal" ou "Pass by value". "Passer par ByVal" semble bizarre.
user253751

@immibis bon appel!
enderland

3
En outre, vous pouvez envisager des boutons radio au lieu de listes déroulantes, étant donné qu'il y a si peu de choix.
Kyralessa

@ Kyralessa, c'est exactement ce que j'ai dit à Mat dans le chat aussi. Et je pense que c'est ce qu'ils ont
choisi

5

J'utiliserais l'un de ces 3 termes pour étiqueter une liste déroulante en sélectionnant:

  1. Sémantique
  2. Passer à côté
  3. Modificateur de paramètre

J'aime "Sémantique"
Mathieu Guindon

J'aime "Parameter Modifier".

3

"Pass By Semantics" est probablement le plus proche de ce que vous recherchez.


argh voler mon chapeau de livraison rapide! Eeeeevil!
Jimmy Hoffa

2
J'en ai déjà un, heureux de vous offrir celui-ci ...
Oded

3

Le terme le plus exact et le plus formel pour cela serait "Aliasing semantics".

Lorsque ByRefest 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. Avec ByVal, 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

  • Alias ​​( ByRef)
  • Copier ( 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 restrictmot-clé C , on la retrouve également dans IDL, où se trouve le mot-clé attribut unique). .NET n'a pas un bon moyen de coder ces connaissances.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.