Як посилатися на ByRef та ByVal у спадному ярлику? [зачинено]


9

MSDN сторінка на ByRefі ByValключових слів , не дуже корисно; якщо я якимось чином не пропустив це, їх просто називають "ключовими словами" скрізь.

Одним з головних учасників цього Rubberduck проекту працюють на дуже крутий Encapsulate поле рефакторінга, і призначений для користувача інтерфейс йде по досить добре .. крім мене є проблема з міткою над випадає ByRef/ ByVal, який говорить : «Доступність»:

Діалогове вікно рефакторингу Rubberduck "Encapsulate Field"

Мені не подобається "Доступність", тому що я використовую його в іншому місці для Public/ Private/ Friendмодифікаторів доступу, де він вважається більш точним.

Я не хочу використовувати "Модифікатор", тому що IMO - це лише короткий термін для "модифікатора доступу".

Я хотів би, щоб ця мітка була точною, але мого словника, мабуть, не вистачає, і я не знаю, як називати ці ключові слова.

Що має бути сказано на цій етикетці, щоб бути точним? Яке слово я шукаю? До якої "родини ключових слів" належать ByRef/ ByValналежать?


2
Як говориться в одному з коментарів, його взагалі не повинно бути там - ByRef для майна трохи божевільний. Якщо це можливо, це зло - що дозволяє змінювати змінні абонентів без їх відома.
jmoreno

Багато документації у "Всесвіті VB" (так, не конкретно VBA), схоже, посилаються на це як "Механізм проходження".
Damien_The_Unbeliever

@jmoreno Я повністю згоден. Я зроблю це ByValбез можливості змінити його на ByRefінше, ніж вручну редагувати згенерований код і "вирішити проблему"! VBA може скласти величезну кількість злих дурниць, яких ви знаєте :-) все ж мені подобається, що нарешті в Інтернеті знайдеться місце, яке додає назву цим ключовим словам.
Матьє Гіндон

Відповіді:


14

У цьому випадку я використовував би "Pass As" (або "Pass").

У вас є потік, який ідеально відповідає цьому використанню.

  • Назва змінної : foo
  • Передати як: ByVal / Pass: ByRef

Це ідеально відповідає вашому робочому процесу і, до речі, саме те, про що йдеться у статті, на яку ви посилаєтесь.

Коли ви читаєте ваші параметри, він відмінно читається при використанні "Pass As", оскільки ви можете просто прочитати заголовок і відповідним чином вибрати текст - "" Ім'я змінної "foo, значення" Pass As "."

Якщо ви хочете, щоб це було трохи читати краще, ви можете скласти список списку "Значення" та "Посилання" залежно від того, ваша цільова аудиторія - це програмісти VBA або не-VBA програмісти, які можуть бути трохи менш знайомі з ключовими словами ByVal та ByRef.

Або ж змініть його на "Pass:" і зробіть його "Спас (ByRef)" та "By Value (ByVal)" у спадному меню. Схоже, у вашому спадному вікні є місце для показу всього цього тексту. Або просто ключові слова ByRef / ByVal.


Я б використовував "Pass as ByVal" або "Pass by value". "Пройти повз ByVal" звучить дивно.
користувач253751

@immibis гарний дзвінок!
Ендерленд

3
Крім того, ви можете розглянути радіо кнопки замість випадаючих, враховуючи, що варіантів існує так мало.
Kyralessa

@Kyralessa - це саме те, що я сказав Мату в чаті теж. І я думаю, це те, з чим вони пішли для остаточного дизайну :-)
enderland

5

Я б використав будь-який із цих 3 термінів, щоб позначити спадне меню, вибравши таке:

  1. Семантика
  2. Проходити повз
  3. Модифікатор параметра

Мені подобається "Семантика"
Матьє Гіндон

Мені подобається «Модифікатор параметрів».

3

"Pass By Semantics", мабуть, найближчий до того, що ви шукаєте.


argh, крадіжка моєї шапки швидкої доставки! Eeeeevil!
Джиммі Хоффа

2
У мене вже є такий, із задоволенням дарую вам цей ...
Oded

3

Найбільш точним і формальним терміном для цього була б "Збудова семантика".

При ByRefвикористанні ім'я всередині функції є псевдонімом змінної абонента - всі зміни в одній з них одразу видно іншій. З ByVal, ім'я всередині функції - це виразна копія змінної абонента (звичайно, і копія абонента, і виклик функції можуть посилатися на один і той же об'єкт, але вони відрізняються тим, що перепризначення параметра всередині функції не призначає змінну абонента ).

Варіанти були б

  • Псевдонім ( ByRef)
  • Скопіювати ( ByVal)

Деякі платформи додають третю можливість, коли виконується псевдонім змінної абонента, але заборонено для більш ніж одного параметра об'єктам, що перекриваються псевдонімом. (Ідея, що стоїть за restrictключовим словом C , також виявляється в IDL, де є ключове слово атрибута unique). .NET не має хорошого способу кодування цих знань.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.