I min artikel, The ArrowKeyNav Rutine, præsenterede jeg en Sub, som du kan bruge til at tilsidesætte standardhåndteringen af piletasterne op og ned på en kontinuerlig formular. Problemet med rutinen, som jeg præsenterede den, er, at du skal kalde den fra hver kontrol, hvor du vil tilsidesætte piletastens funktionalitet.
Sådan kan det se ud i et formularmodul:
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
Der er et par måder at reducere mængden af kedelkode, vi har brug for i denne situation, men vi sætter det til side med henblik på denne artikel. Så lad os for argumentets skyld bare antage, at der ikke er nogen måde at reducere mængden af kode på. Givet denne begrænsning, hvordan kan vi øge læsbarheden af ovenstående kode?
Sammenføjning af kodelinjer med kolon-tegnet
Vi kan forbinde flere linjer kode ved at bruge kolon-tegnet (:
).
bruges som et terminalelement i den syntaktiske grammatik til at navngive token der fungerer som en "end of statement"-markør. Generelt er slutningen af sætning markeret med enten et eller et kolontegn .
Forbedring af læsbarheden ved at samle linjer
Denne teknik er noget, du skal bruge med omhu. Men hvis det bruges fornuftigt, kan det øge læsbarheden af din kode.
I eksempelkoden ovenfor kalder hver Sub den samme nøjagtige kode:
ArrowKeyNav KeyCode, Shift
Det er faktisk ikke sandt. Hvis du ser godt efter, vil du se, at tbProductCode_KeyDown()
rutinen sender vbKeyDown
i stedet for KeyCode
som det første argument.
Denne forskel er dog let at gå glip af ved at bruge standard VBA-formatering:
Får forkert kode til at se forkert ud
Hvis vi forbinder linjerne ved hjælp af koloner – og justerer mellemrummet, så alle vores opkald til ArrowKeyNav
er venstrejusteret – så skiller den inkonsekvens, der smelter sammen ovenfor, sig ud som en øm tommelfinger i koden nedenfor:
Når det ses i sammenhæng med normale funktioner og underrutiner, skiller vores blok af kedelkode sig tydeligt fra hinanden. Denne sondring hjælper med at øge signal/støjforholdet for vores kode: