In mijn artikel, The ArrowKeyNav Routine, presenteerde ik een Sub die je kunt gebruiken om de standaardafhandeling van de pijltoetsen omhoog en omlaag op een doorlopend formulier te negeren. Het probleem met de routine zoals ik die heb gepresenteerd, is dat je deze moet aanroepen vanuit elk besturingselement waar je de pijltoetsfunctionaliteit wilt overschrijven.
Zo zou dat eruit kunnen zien in een formuliermodule:
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
Er zijn een aantal manieren om de hoeveelheid boilerplate-code die we in deze situatie nodig hebben te verminderen, maar die laten we voor de doeleinden van dit artikel achterwege. Laten we dus, omwille van het argument, aannemen dat er geen manier is om de hoeveelheid code te verminderen. Hoe kunnen we, gezien die beperking, de leesbaarheid van de bovenstaande code vergroten?
Coderegels samenvoegen met de dubbele punt
We kunnen meerdere regels code samenvoegen met de dubbele punt (:
).
wordt gebruikt als een eindelement van de syntactische grammatica om het token een naam te geven dat fungeert als een "einde van de verklaring" -markering. Over het algemeen wordt het einde van een instructie gemarkeerd met een of een dubbele punt .
De leesbaarheid verbeteren door lijnen samen te voegen
Deze techniek is iets waar je voorzichtig mee om moet gaan. Maar als het oordeelkundig wordt gebruikt, kan het de leesbaarheid van uw code vergroten.
In de voorbeeldcode hierboven roept elke Sub dezelfde exacte code aan:
ArrowKeyNav KeyCode, Shift
Eigenlijk is dat niet waar. Als u goed kijkt, ziet u dat de tbProductCode_KeyDown()
routine passeert vbKeyDown
in plaats van KeyCode
als het eerste argument.
Dit verschil is echter gemakkelijk te missen bij gebruik van standaard VBA-opmaak:
Onjuiste code er verkeerd uit laten zien
Als we de regels samenvoegen met dubbele punten - en de witruimte aanpassen zodat al onze oproepen naar ArrowKeyNav
zijn links uitgelijnd - dan valt de inconsistentie die hierboven samenvloeit op als een pijnlijke duim in de onderstaande code:
Wanneer bekeken in de context van normale functies en subroutines, onderscheidt ons blok boilerplate-code zich duidelijk. Dit onderscheid helpt de signaal-ruisverhouding van onze code te vergroten: