sql >> Database >  >> RDS >> Access

Mooie blokken ketelplaat

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:


  1. Expliciete JOINs vs Impliciete joins?

  2. Prioriteit wijzigen voor gelijktijdig programma

  3. Een databasedump maken voor specifieke tabellen en items Postgres

  4. Wat is ALS Logische operator in SQL Server - SQL Server / TSQL-zelfstudie, deel 123