Jak odwoływać się do ByRef i ByVal w rozwijanej etykiecie? [Zamknięte]


9

MSDN strona na ByRefi ByValsłów kluczowych nie jest bardzo pomocne; chyba że jakoś pominąłem, wszędzie są one po prostu nazywane „słowami kluczowymi”.

Jeden z głównych współtwórców projektu Rubberduck pracuje nad bardzo fajnym refaktoryzacją pola enkapsulacji , a interfejs użytkownika działa całkiem nieźle .. z wyjątkiem tego, że mam problem z etykietą powyżej listy rozwijanej dla ByRef/ ByVal, która mówi „Dostępność”:

Okno dialogowe refaktoryzacji Rubberduck „Encapsulate Field”

Nie podoba mi się „Dostępność”, ponieważ używam go gdzie indziej do modyfikatorów Public/ Private/ Friendaccess, gdzie wydaje się bardziej dokładny.

Nie chcę używać „modyfikatora”, ponieważ IMO to tylko skrót od „modyfikatora dostępu”.

Chciałbym, aby ta etykieta była dokładna, ale najwyraźniej brakuje mi słownictwa i nie wiem, jak nazwać te słowa kluczowe.

Co powinna powiedzieć ta etykieta, aby być dokładnym? Jakiego słowa szukam? Do jakiej „rodziny słów kluczowych” należy ByRef/ ByValnależy?


2
Jak mówi jeden z komentarzy, w ogóle nie powinno tam być - ByRef dla nieruchomości jest trochę szalony. Jeśli to możliwe, jest to zło - pozwalając na zmianę zmiennych dzwoniących bez ich wiedzy.
jmoreno

Wiele dokumentacji w „Wszechświecie VB” (a więc nie w szczególności VBA) wydaje się nazywać to „mechanizmem przekazywania”.
Damien_The_Unbeliever

@jmoreno Całkowicie się zgadzam. Zrobię to ByValbez możliwości zmiany na ByRefinny niż ręczna edycja wygenerowanego kodu i „problem rozwiązany”! VBA może skompilować ogromną ilość złych bzdur, które znasz :-) Mimo to podoba mi się, że w końcu jest miejsce online, które nadaje nazwę tym słowom kluczowym.
Mathieu Guindon,

Odpowiedzi:


14

W takim przypadku użyłbym „Pass As” (lub „Pass”).

Masz przepływ, który idealnie pasuje do tego zastosowania.

  • Nazwa zmiennej : foo
  • Podaj jako: ByVal / Pass: ByRef

To idealnie pasuje do Twojego przepływu pracy, a przy okazji jest dokładnie tym, na co wskazuje artykuł, do którego się odwołujesz.

Gdy czytasz opcje, czyta się doskonale, gdy używasz „Przekaż jako”, ponieważ możesz po prostu przeczytać nagłówek i odpowiednio zaznaczyć tekst - „„ Zmienna nazwa ”foo, wartość„ Przekaż jako ””.

Jeśli chcesz, aby był nieco lepiej czytany, możesz ustawić opcje listy „Wartość” i „Odniesienie” w zależności od tego, czy twoimi odbiorcami docelowymi są programiści VBA lub programiści spoza VBA, którzy mogą być nieco mniej zaznajomieni ze słowami kluczowymi ByVal i ByRef.

Ewentualnie zmień go na „Pass:” i z menu wybierz „By Reference (ByRef)” i „By Value (ByVal)”. Wygląda na to, że w rozwijanym menu jest miejsce na cały ten tekst. Lub po prostu słowa kluczowe ByRef / ByVal.


Użyłbym „Przekaż jako ByVal” lub „Przekaż według wartości”. „Pass by Byal” brzmi dziwnie.
user253751,

@immibis good call!
enderland

3
Możesz również rozważyć użycie przycisków opcji zamiast list rozwijanych, biorąc pod uwagę, że istnieje tak niewiele opcji.
Kyralessa

@ Kyralessa też dokładnie to powiedziałem Matowi na czacie. I myślę, że po to poszli do ostatecznego projektu :-)
enderland

5

Użyłbym jednego z tych 3 terminów, aby oznaczyć menu rozwijane, wybierając:

  1. Semantyka
  2. Przejść obok
  3. Modyfikator parametrów

Lubię „Semantykę”
Mathieu Guindon,

Lubię „Parameter Modifier”.

3

„Pass By Semantics” jest prawdopodobnie najbliższe temu, czego szukasz.


argh kradnie mój szybki kapelusz dostawy! Eeeeevil!
Jimmy Hoffa,

2
Mam już jeden, z przyjemnością Ci go daję ...
Oded

3

Najdokładniejszym i formalnym terminem na to byłoby „Aliasing semantyki”.

Gdy ByRefjest używana, nazwa wewnątrz funkcji jest aliasem zmiennej wywołującej - wszystkie zmiany jednej z nich są natychmiast widoczne dla drugiej. Z ByVal, nazwa wewnątrz funkcji jest wyraźną kopią zmiennej wywołującej (oczywiście zarówno kopia wywołującego, jak i kopia funkcji mogą odnosić się do tego samego obiektu, ale różnią się tym, że ponowne przypisanie parametru w funkcji nie powoduje ponownego przypisania zmiennej wywołującej ).

Opcje byłyby

  • Alias ​​( ByRef)
  • Kopiuj ( ByVal)

Niektóre platformy dodają trzecią możliwość, polegającą na aliasingu zmiennej wywołującej, ale dla więcej niż jednego parametru alias nakładających się obiektów jest niedozwolony. (Pomysł restrictsłowa kluczowego C można znaleźć również w IDL, gdzie znajduje się słowo kluczowe atrybutu unique). .NET nie ma dobrego sposobu na zakodowanie tej wiedzy.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.