MSDN strona na ByRef
i ByVal
słó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ść”:
Nie podoba mi się „Dostępność”, ponieważ używam go gdzie indziej do modyfikatorów Public
/ Private
/ Friend
access, 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
/ ByVal
należy?
ByVal
bez możliwości zmiany naByRef
inny 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.Odpowiedzi:
W takim przypadku użyłbym „Pass As” (lub „Pass”).
Masz przepływ, który idealnie pasuje do tego zastosowania.
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.
źródło
Użyłbym jednego z tych 3 terminów, aby oznaczyć menu rozwijane, wybierając:
źródło
„Pass By Semantics” jest prawdopodobnie najbliższe temu, czego szukasz.
źródło
Najdokładniejszym i formalnym terminem na to byłoby „Aliasing semantyki”.
Gdy
ByRef
jest używana, nazwa wewnątrz funkcji jest aliasem zmiennej wywołującej - wszystkie zmiany jednej z nich są natychmiast widoczne dla drugiej. ZByVal
, 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
ByRef
)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ł
restrict
słowa kluczowego C można znaleźć również w IDL, gdzie znajduje się słowo kluczowe atrybutuunique
). .NET nie ma dobrego sposobu na zakodowanie tej wiedzy.źródło
Nazwałbym to „kategorią [argument]”.
Argument ma nazwę, typ i kategorię.
źródło