In meinem Artikel Die ArrowKeyNav-Routine habe ich ein Sub vorgestellt, mit dem Sie die Standardbehandlung der Aufwärts- und Abwärtspfeiltasten in einem Endlosformular überschreiben können. Das Problem mit der Routine, wie ich sie vorgestellt habe, ist, dass Sie sie von jedem Steuerelement aus aufrufen müssen, wo Sie die Pfeiltastenfunktion überschreiben möchten.
So könnte das in einem Formularmodul aussehen:
Private Sub cbSupplierID_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub chkDiscontinued_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbID_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbListPrice_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbProductCode_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav vbKeyDown, Shift
End Sub
Private Sub tbProductName_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Es gibt ein paar Möglichkeiten, die Menge an Boilerplate-Code zu reduzieren, die wir in dieser Situation benötigen, aber wir werden das für die Zwecke dieses Artikels beiseite legen. Nehmen wir also der Argumentation halber an, dass es keine Möglichkeit gibt, die Codemenge zu reduzieren. Wie können wir angesichts dieser Einschränkung die Lesbarkeit des obigen Codes verbessern?
Verbinden von Codezeilen mit dem Doppelpunktzeichen
Wir können mehrere Codezeilen mit dem Doppelpunktzeichen verbinden (:
).
wird als abschließendes Element der syntaktischen Grammatik verwendet, um das Token zu benennen die als "Ende der Anweisung"-Markierung fungiert. Im Allgemeinen wird das Ende der Anweisung entweder durch ein oder einen Doppelpunkt gekennzeichnet .
Verbesserung der Lesbarkeit durch Verbindungslinien
Diese Technik ist etwas, das Sie mit Vorsicht anwenden müssen. Bei vernünftiger Verwendung kann es jedoch die Lesbarkeit Ihres Codes verbessern.
Im obigen Beispielcode ruft jedes Sub genau denselben Code auf:
ArrowKeyNav KeyCode, Shift
Eigentlich stimmt das nicht. Wenn Sie genau hinsehen, werden Sie feststellen, dass tbProductCode_KeyDown()
Routine übergibt vbKeyDown
statt KeyCode
als erstes Argument.
Dieser Unterschied ist jedoch bei Verwendung der Standard-VBA-Formatierung leicht zu übersehen:
Falschen Code falsch aussehen lassen
Wenn wir die Zeilen mit Doppelpunkten verbinden – und die Leerzeichen so anpassen, dass alle unsere Aufrufe von ArrowKeyNav
linksbündig sind – dann sticht die Inkonsistenz, die sich oben einfügt, wie ein wunder Daumen in den folgenden Code:
Im Zusammenhang mit normalen Funktionen und Unterprogrammen betrachtet, hebt sich unser Block aus Boilerplate-Code deutlich ab. Diese Unterscheidung trägt dazu bei, das Signal-Rausch-Verhältnis unseres Codes zu erhöhen: