Wie verweise ich in einem Dropdown-Label auf ByRef und ByVal? [geschlossen]


9

Die MSDN- Seite ByRefund die ByValSchlüsselwörter sind nicht sehr hilfreich. Wenn ich es nicht irgendwie übersprungen habe, werden sie einfach überall als "Schlüsselwörter" bezeichnet.

Einer der Hauptverantwortlichen des Rubberduck- Projekts arbeitet an einem sehr coolen Encapsulate Field- Refactoring, und die Benutzeroberfläche kommt ziemlich gut voran. Außer ich habe ein Problem mit dem Etikett über dem Dropdown-Menü für ByRef/ ByVal, auf dem "Barrierefreiheit" steht:

Rubberducks Refactoring-Dialog "Encapsulate Field"

Ich mag "Barrierefreiheit" nicht, weil ich es an anderer Stelle für Public/ Private/ FriendZugriffsmodifikatoren verwende, wo es sich genauer anfühlt.

Ich möchte "Modifier" nicht verwenden, da IMO nur eine Abkürzung für "Access Modifier" ist.

Ich möchte, dass dieses Etikett korrekt ist, aber mein Wortschatz fehlt anscheinend und ich weiß nicht, wie ich diese Schlüsselwörter nennen soll.

Was sollte dieses Etikett sagen, um genau zu sein? Was ist das Wort, das ich suche? Zu welcher "Familie von Schlüsselwörtern" gehören ByRef/ ByValgehören sie?


2
Wie einer der Kommentare sagt, sollte es überhaupt nicht da sein - ByRef für eine Immobilie ist ein bisschen verrückt. Wenn es überhaupt möglich ist, ist es böse - Sie können die Variablen von Anrufern ohne deren Wissen ändern.
jmoreno

Viele Dokumentationen im "VB Universe" (also nicht speziell VBA) scheinen dies als "Passing Mechanism" zu bezeichnen.
Damien_The_Unbeliever

@jmoreno Ich stimme vollkommen zu. Ich werde es ByValohne die Möglichkeit machen, es zu ändern, ByRefaußer den generierten Code manuell zu bearbeiten, und "Problem gelöst"! VBA kann eine enorme Menge an bösem Unsinn zusammenstellen, den Sie kennen :-) Trotzdem gefällt mir, dass es endlich einen Online-Platz gibt, der diesen Schlüsselwörtern einen Namen gibt.
Mathieu Guindon

Antworten:


14

In diesem Fall würde ich "Pass As" (oder "Pass") verwenden.

Sie haben einen Flow, der perfekt zu dieser Verwendung passt.

  • Variablenname : foo
  • Pass as: ByVal / Pass: ByRef

Dies passt perfekt zu Ihrem Workflow und ist im Übrigen genau das, was der Artikel, auf den Sie verweisen, angibt.

Wenn Sie Ihre Optionen durchlesen, wird es bei Verwendung von "Pass As" perfekt gelesen, da Sie einfach die Überschrift durchlesen und den Text entsprechend auswählen können - "'Variablenname' foo, 'Pass As' -Wert."

Wenn Sie die Lesbarkeit verbessern möchten , können Sie die Listenoptionen "Wert" und "Referenz" festlegen, je nachdem, ob Ihre Zielgruppe VBA-Programmierer oder Nicht-VBA-Programmierer sind, die mit den Schlüsselwörtern ByVal und ByRef möglicherweise etwas weniger vertraut sind.

Oder ändern Sie es alternativ in "Pass:" und machen Sie es in der Dropdown-Liste zu "By Reference (ByRef)" und "By Value (ByVal)". Es sieht so aus, als hätte Ihr Dropdown-Menü Platz, um den gesamten Text anzuzeigen. Oder nur die ByRef / ByVal-Schlüsselwörter.


Ich würde „Pass verwenden als ByVal“ oder „Pass nach Wert“. "Pass by ByVal" klingt komisch.
user253751

@immibis guten Anruf!
Enderland

3
Sie können auch Optionsfelder anstelle von Dropdowns in Betracht ziehen, da es so wenige Auswahlmöglichkeiten gibt.
Kyralessa

@Kyralessa genau das habe ich Mat auch im Chat gesagt. Und ich denke, es ist das, was sie für das endgültige Design gemacht haben :-)
Enderland

5

Ich würde einen dieser drei Begriffe verwenden, um ein Dropdown-Menü zu kennzeichnen, in dem Folgendes ausgewählt wird:

  1. Semantik
  2. Vorbeigehen
  3. Parametermodifikator

Ich mag "Semantik"
Mathieu Guindon

Ich mag "Parameter Modifier".

3

"Pass By Semantics" ist wahrscheinlich dem am nächsten, was Sie suchen.


Argh stiehlt meinen schnellen Lieferhut! Eeeeevil!
Jimmy Hoffa

2
Ich habe bereits eine, glücklich, Ihnen diese zu geben ...
Oded

3

Der genaueste und formalste Begriff hierfür wäre "Aliasing-Semantik".

Bei ByRefVerwendung ist der Name in der Funktion ein Alias ​​für die Variable des Aufrufers - alle Änderungen an beiden sind sofort für den anderen sichtbar. Mit ByValist der Name in der Funktion eine eindeutige Kopie der Variablen des Aufrufers (natürlich können sich sowohl die Kopie des Aufrufers als auch der Funktion auf dasselbe Objekt beziehen, aber sie unterscheiden sich darin, dass die Neuzuweisung des Parameters innerhalb der Funktion die Variable des Aufrufers nicht neu zuweist ).

Die Optionen wären

  • Alias ​​( ByRef)
  • Kopieren ( ByVal)

Einige Plattformen fügen eine dritte Möglichkeit hinzu, bei der das Aliasing der Variablen des Aufrufers durchgeführt wird, es jedoch nicht zulässig ist, dass mehr als ein Parameter überlappende Objekte aliasisiert. (Die Idee hinter dem C- restrictSchlüsselwort findet man auch in IDL, wo sich das Attribut-Schlüsselwort befindet unique). .NET bietet keine gute Möglichkeit, dieses Wissen zu verschlüsseln.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.