Como se referir a ByRef e ByVal em um rótulo suspenso? [fechadas]


9

A página do MSDNByRef e as ByValpalavras-chave não são muito úteis; a menos que eu tenha pulado de alguma forma, eles estão simplesmente sendo referidos como "palavras-chave" em todos os lugares.

Um dos principais contribuidores do projeto Rubberduck está trabalhando em uma refatoração Encapsulate Field muito interessante , e a interface do usuário está indo muito bem .. exceto que eu tenho um problema com o rótulo acima da lista suspensa para ByRef/ ByVal, que diz "Acessibilidade":

Caixa de diálogo de refatoração "Encapsulate Field" de Rubberduck

Eu não gosto de "Acessibilidade" porque estou usando-o em outro lugar para Public/ Private/ Friendaccess modifiers onde parece mais preciso.

Eu não quero usar o "Modificador" porque o IMO é apenas uma abreviação de "Modificador de acesso".

Gostaria que esse rótulo fosse preciso, mas aparentemente meu vocabulário está ausente e não sei como chamar essas palavras-chave.

O que esse rótulo deve dizer para ser preciso? Qual é a palavra que estou procurando? A que "família de palavras-chave" pertence ByRef/ ByValpertence?


2
Como um dos comentários diz, ele não deveria estar lá - ByRef para uma propriedade é um pouco louco. Se possível, é ruim - permitindo que você altere as variáveis ​​dos chamadores sem o conhecimento deles.
jmoreno

Muita documentação no "VB Universe", (portanto, não especificamente no VBA), parece se referir a isso como o "Mecanismo de Passagem".
Damien_The_Unbeliever

@jmoreno Concordo plenamente. Vou fazê-lo ByValsem a possibilidade de alterá-lo para ByRefoutro que não seja editar manualmente o código gerado e "problema resolvido"! O VBA pode compilar uma tremenda quantidade de besteiras ruins que você conhece :-) ainda assim, eu gosto que finalmente haja um lugar on-line que coloque um nome nessas palavras-chave.
Mathieu Guindon

Respostas:


14

Nesse caso, eu usaria "Pass As" (ou "Pass").

Você tem um fluxo que combina perfeitamente com esse uso.

  • Nome da variável : foo
  • Passar como: ByVal / Pass: ByRef

Isso se encaixa perfeitamente no seu fluxo de trabalho e é exatamente o que o artigo que você menciona indica.

À medida que você lê suas opções, ele lê perfeitamente ao usar 'Passar', pois você pode simplesmente ler o cabeçalho e selecionar o texto adequadamente - "'Nome da variável' foo, valor de 'Passar como'".

Se você quiser ler um pouco melhor, poderá fazer as opções da lista "Valor" e "Referência", dependendo de seu público-alvo serem programadores VBA ou não-VBA, que podem estar um pouco menos familiarizados com as palavras-chave ByVal e ByRef.

Ou, alternativamente, altere-o para "Pass:" e faça com "By Reference (ByRef)" e "By Value (ByVal)" no menu suspenso. Parece que seu menu suspenso tem espaço para mostrar todo esse texto. Ou apenas as palavras-chave ByRef / ByVal.


Eu usaria "Pass as ByVal" ou "Pass by value". "Pass by ByVal" parece estranho.
user253751

@immibis good call!
Enderland

3
Além disso, você pode considerar botões de opção em vez de menus suspensos, uma vez que existem poucas opções.
Kyralessa

@ Kyralessa, foi exatamente o que eu disse a Mat no chat também. E eu acho que é o que eles foram com para o design final :-)
enderland

5

Eu usaria um desses três termos para rotular uma lista suspensa selecionando:

  1. Semântica
  2. Passar por
  3. Modificador de parâmetro

Eu gosto de "Semântica"
Mathieu Guindon

Eu gosto de "Modificador de parâmetro".

3

"Pass By Semantics" é provavelmente o mais próximo do que você está procurando.


Argh roubar meu chapéu de entrega rápida! Eeeeevil!
Jimmy Hoffa

2
Eu já tenho um, feliz em lhe dar este ...
Oded

3

O termo mais exato e formal para isso seria "Semântica de aliasing".

Quando ByRefé usado, o nome dentro da função é um alias para a variável do chamador - todas as alterações em uma delas são imediatamente visíveis à outra. Com ByVal, o nome dentro da função é uma cópia distinta da variável do chamador (é claro, a cópia do chamador e da função pode se referir ao mesmo objeto, mas elas são distintas no fato de que a reatribuição do parâmetro dentro da função não reatribuir a variável do chamador )

As opções seriam

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

Algumas plataformas adicionam uma terceira possibilidade, na qual o alias da variável do chamador é feito, mas não é permitido que mais de um parâmetro aliasse objetos sobrepostos. (A ideia por trás da restrictpalavra-chave C , também é encontrada no IDL, onde está a palavra-chave do atributo unique). O .NET não tem uma boa maneira de codificar esse conhecimento.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.