Как сослаться на ByRef и ByVal в выпадающем списке? [закрыто]

9

MSDN страница на ByRefи ByValключевых слов , не очень полезно; если я не пропущу это, их везде называют «ключевыми словами».

Один из основных участников проекта Rubberduck работает над очень классным рефакторингом Encapsulate Field , и пользовательский интерфейс работает довольно хорошо ... за исключением того, что у меня есть проблема с надписью над ByRef/ для надписи ByVal, которая говорит "Доступность":

Диалог рефакторинга от компании Rubberduck "Encapsulate Field"

Мне не нравится «Доступность», потому что я использую его в другом месте для Public/ Private/ Friendдоступа модификаторов, где он кажется более точным.

Я не хочу использовать «Модификатор», потому что IMO это просто сокращение от «Модификатор доступа».

Мне бы хотелось, чтобы этот ярлык был точным, но моего словарного запаса явно не хватает, и я не знаю, как назвать эти ключевые слова.

Что должен сказать этот ярлык, чтобы быть точным? Какое слово я ищу? К какому «семейству ключевых слов» принадлежит ByRef/ ByValпринадлежит?

Матье Гиндон
источник
2
Как говорится в одном из комментариев, его вообще не должно быть - свойство ByRef немного безумно. Если это возможно, это зло - позволяет вам изменять переменные вызывающих абонентов без их ведома.
Jmoreno
Большая часть документации в «VB Universe» (то есть не в 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)» и «По значению (ByVal)» в раскрывающемся списке. Похоже, в вашем выпадающем списке есть место, чтобы показать весь этот текст. Или только ключевые слова ByRef / ByVal.

enderland
источник
Я бы использовал «Pass as ByVal» или «Pass by value». «Проходить мимо» звучит странно.
user253751
@immibis хороший звонок!
enderland
3
Кроме того, вы могли бы рассмотреть переключатели вместо выпадающих, учитывая, что есть очень мало вариантов.
Kyralessa
@Kyralessa, это именно то, что я сказал Мэт в чате тоже. И я думаю, что они пошли на финальный дизайн :-)
enderland
5

Я бы использовал любой из этих трех терминов для обозначения выпадающего списка, выбрав следующее:

  1. Семантика
  2. Пройти мимо
  3. Модификатор параметра
Джимми Хоффа
источник
Мне нравится "Семантика"
Матье Гиндон
Мне нравится "Модификатор параметров".
3

«Pass By Semantics», вероятно, ближе всего к тому, что вы ищете.

Одед
источник
аааааааааааааааа в краже моей быстрой доставки Eeeeevil!
Джимми Хоффа
2
У меня уже есть один, рад дать вам этот ...
Одед
3

Наиболее точным и формальным термином для этого была бы «семантика алиасинга».

Когда ByRefиспользуется, имя внутри функции является псевдонимом для переменной вызывающего - все изменения одного из них сразу видны другому. При ByValэтом имя внутри функции является отдельной копией переменной вызывающей стороны (конечно, копия и вызывающей, и функции может ссылаться на один и тот же объект, но они отличаются тем, что переназначение параметра внутри функции не переназначает переменную вызывающей стороны ).

Варианты будут

  • Псевдоним ( ByRef)
  • Копировать ( ByVal)

На некоторых платформах добавлена ​​третья возможность, когда псевдоним переменной вызывающей стороны выполняется, но для псевдонимов перекрывающихся объектов нельзя использовать более одного параметра. (Идея, лежащая в основе restrictключевого слова C , можно найти и в IDL, где ключевое слово attribute unique). У .NET нет хорошего способа закодировать это знание.

Бен Фойгт
источник
-1

Я бы назвал это «категорией [аргумента]».

Аргумент имеет имя, тип и категорию.

Гонки легкости на орбите
источник