¿Cómo hacer referencia a ByRef y ByVal en una etiqueta desplegable? [cerrado]

9

La página de MSDNByRef y las ByValpalabras clave no son muy útiles; a menos que lo omita de alguna manera, simplemente se les conoce como "palabras clave" en todas partes.

Uno de los principales contribuyentes del proyecto Rubberduck está trabajando en una refactorización de campo encapsulado muy buena , y la interfaz de usuario está funcionando bastante bien ... excepto que tengo un problema con la etiqueta sobre el menú desplegable para ByRef/ ByVal, que dice "Accesibilidad":

Diálogo de refactorización "Encapsular campo" de Rubberduck

No me gusta "Accesibilidad" porque la estoy usando en otro lugar para Public/ Private/ Friendmodificadores de acceso donde se siente más precisa.

No quiero usar "Modificador" porque IMO es solo una abreviatura de "modificador de acceso".

Me gustaría que esa etiqueta sea precisa, pero aparentemente mi vocabulario es insuficiente y no sé cómo llamar a estas palabras clave.

¿Qué debería decir esta etiqueta, para ser exactos? ¿Cuál es la palabra que estoy buscando? ¿A qué "familia de palabras clave" pertenece ByRef/ ByValpertenece?

Mathieu Guindon
fuente
2
Como dice uno de los comentarios, no debería estar allí en absoluto: ByRef para una propiedad es un poco loco. Si es posible, es malo, lo que le permite cambiar las variables de las personas que llaman sin su conocimiento.
jmoreno
Una gran cantidad de documentación en el "Universo VB", (por lo tanto, no específicamente VBA) parece referirse a esto como el "Mecanismo de paso".
Damien_The_Unbeliever
@ jmoreno, estoy completamente de acuerdo. ¡Lo haré ByValsin posibilidad de cambiarlo a ByRefotro que no sea editar manualmente el código generado, y "problema resuelto"! VBA puede compilar una tremenda cantidad de tonterías malvadas que sabes :-) aún así, me gusta que finalmente haya un lugar en línea que ponga un nombre a estas palabras clave.
Mathieu Guindon

Respuestas:

14

En este caso, usaría "Pasar como" (o "Pasar").

Tiene un flujo que coincide perfectamente con este uso.

  • Nombre variable : foo
  • Pasar como: ByVal / Pasar: ByRef

Esto se adapta perfectamente a su flujo de trabajo y, por cierto, es exactamente lo que indica el artículo al que hace referencia.

A medida que lee sus opciones, se lee perfectamente cuando se usa 'Pasar como', ya que simplemente puede leer el encabezado y seleccionar el texto apropiadamente - "'Nombre de variable' foo, 'Pasar como' valor".

Si desea que se lea un poco mejor, puede hacer que sus opciones de lista "Valor" y "Referencia" dependan de si su público objetivo son programadores de VBA o programadores que no son de VBA que pueden estar un poco menos familiarizados con las palabras clave ByVal y ByRef.

O, alternativamente, cámbielo a "Pass:" y conviértalo en "By Reference (ByRef)" y "By Value (ByVal)" en el menú desplegable. Parece que tu menú desplegable tiene el espacio para mostrar todo este texto. O simplemente las palabras clave ByRef / ByVal.

Enderland
fuente
Usaría "Pasar como ByVal" o "Pasar por valor". "Pass by ByVal" suena raro.
user253751
@immibis buena llamada!
enderland
3
Además, puede considerar los botones de opción en lugar de desplegables, dado que hay muy pocas opciones.
Kyralessa
@ Kyralessa, eso es exactamente lo que le dije a Mat en el chat también. Y creo que es lo que
eligieron
5

Usaría cualquiera de estos 3 términos para etiquetar un menú desplegable seleccionando eso:

  1. Semántica
  2. Pasar por
  3. Modificador de parámetros
Jimmy Hoffa
fuente
Me gusta "Semántica"
Mathieu Guindon
Me gusta "Modificador de parámetros".
3

"Pass By Semantics" es probablemente lo más parecido a lo que estás buscando.

Oded
fuente
¡Argh robando mi sombrero de entrega rápida! Eeeeevil!
Jimmy Hoffa
2
Ya tengo uno, feliz de darte este ...
Oded
3

El término más exacto y formal para esto sería "semántica de alias".

Cuando ByRefse usa, el nombre dentro de la función es un alias para la variable de la persona que llama: todos los cambios en uno de los dos son inmediatamente visibles para el otro. Con ByVal, el nombre dentro de la función es una copia distinta de la variable de la persona que llama (por supuesto, tanto la copia de la persona que llama como la de la función pueden referirse al mismo objeto, pero son distintas porque la reasignación del parámetro dentro de la función no reasigna la variable de la persona que llama )

Las opciones serían

  • Alias ​​( ByRef)
  • Copiar ( ByVal)

Algunas plataformas agregan una tercera posibilidad, donde se realiza el alias de la variable del llamador pero no se permite que más de un parámetro alias se superpongan objetos. (La idea detrás de la restrictpalabra clave C , también se encuentra en IDL, donde está la palabra clave atributo unique). .NET no tiene una buena forma de codificar este conocimiento.

Ben Voigt
fuente
-1

Yo lo llamaría una "categoría [argumento]".

El argumento tiene un nombre, un tipo y una categoría.

Carreras de ligereza en órbita
fuente