MSDN страница на ByRef
и ByVal
ключевых слов , не очень полезно; если я не пропущу это, их везде называют «ключевыми словами».
Один из основных участников проекта Rubberduck работает над очень классным рефакторингом Encapsulate Field , и пользовательский интерфейс работает довольно хорошо ... за исключением того, что у меня есть проблема с надписью над ByRef
/ для надписи ByVal
, которая говорит "Доступность":
Мне не нравится «Доступность», потому что я использую его в другом месте для Public
/ Private
/ Friend
доступа модификаторов, где он кажется более точным.
Я не хочу использовать «Модификатор», потому что IMO это просто сокращение от «Модификатор доступа».
Мне бы хотелось, чтобы этот ярлык был точным, но моего словарного запаса явно не хватает, и я не знаю, как назвать эти ключевые слова.
Что должен сказать этот ярлык, чтобы быть точным? Какое слово я ищу? К какому «семейству ключевых слов» принадлежит ByRef
/ ByVal
принадлежит?
ByVal
без возможности изменить его наByRef
другое, чем ручное редактирование сгенерированного кода, и «проблема решена»! VBA может собрать огромное количество злого бреда, который вы знаете :-) тем не менее, мне нравится, что в Интернете наконец-то есть место, которое ставит имя этим ключевым словам.Ответы:
В этом случае я бы использовал «Pass As» (или «Pass»).
У вас есть поток, который идеально соответствует этому использованию.
Это идеально подходит для вашего рабочего процесса, и, кстати, это именно то, что указано в указанной вами статье.
Когда вы читаете ваши параметры, они отлично читаются при использовании «Pass As», так как вы можете просто прочитать заголовок и выбрать соответствующий текст - «Имя переменной» foo, значение «Pass As».
Если вы хотите, чтобы он немного читался лучше, вы можете настроить параметры списка «Значение» и «Справочник» в зависимости от того, является ли ваша целевая аудитория программистами VBA или не-VBA, которые могут быть немного менее знакомы с ключевыми словами ByVal и ByRef.
Или, в качестве альтернативы, измените его на «Pass:» и сделайте его «По ссылке (ByRef)» и «По значению (ByVal)» в раскрывающемся списке. Похоже, в вашем выпадающем списке есть место, чтобы показать весь этот текст. Или только ключевые слова ByRef / ByVal.
источник
Я бы использовал любой из этих трех терминов для обозначения выпадающего списка, выбрав следующее:
источник
«Pass By Semantics», вероятно, ближе всего к тому, что вы ищете.
источник
Наиболее точным и формальным термином для этого была бы «семантика алиасинга».
Когда
ByRef
используется, имя внутри функции является псевдонимом для переменной вызывающего - все изменения одного из них сразу видны другому. ПриByVal
этом имя внутри функции является отдельной копией переменной вызывающей стороны (конечно, копия и вызывающей, и функции может ссылаться на один и тот же объект, но они отличаются тем, что переназначение параметра внутри функции не переназначает переменную вызывающей стороны ).Варианты будут
ByRef
)ByVal
)На некоторых платформах добавлена третья возможность, когда псевдоним переменной вызывающей стороны выполняется, но для псевдонимов перекрывающихся объектов нельзя использовать более одного параметра. (Идея, лежащая в основе
restrict
ключевого слова C , можно найти и в IDL, где ключевое слово attributeunique
). У .NET нет хорошего способа закодировать это знание.источник
Я бы назвал это «категорией [аргумента]».
Аргумент имеет имя, тип и категорию.
источник