sql >> Databasteknik >  >> RDS >> Access

Vackra block av pannplåt

I min artikel, The ArrowKeyNav Routine, presenterade jag en Sub som du kan använda för att åsidosätta standardhanteringen av upp- och nedpiltangenterna på ett kontinuerligt formulär. Problemet med rutinen som jag presenterade den är att du måste anropa den från varje kontroll där du vill åsidosätta piltangentens funktionalitet.

Så här kan det se ut i en formulärmodul:

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

Det finns ett par sätt att minska mängden boilerplate-kod vi behöver i den här situationen, men vi kommer att lägga det åt sidan för den här artikelns syften. Så, för argumentets skull, låt oss bara anta att det inte finns något sätt att minska mängden kod. Med tanke på den begränsningen, hur kan vi öka läsbarheten för ovanstående kod?

Sätta ihop kodrader med kolontecknet

Vi kan sammanfoga flera kodrader med hjälp av kolontecknet (: ).

används som ett terminalelement i den syntaktiska grammatiken för att namnge token som fungerar som en "slut på uttalandet"-markör. I allmänhet markeras slutet av påståendet med antingen eller kolontecken .

Förbättra läsbarheten genom att sammanfoga rader

Denna teknik är något du måste använda med försiktighet. Men om den används på ett klokt sätt kan det öka läsbarheten för din kod.

I exempelkoden ovan anropar varje Sub samma exakta kod:

ArrowKeyNav KeyCode, Shift

Det är faktiskt inte sant. Om du tittar noga kommer du att se att tbProductCode_KeyDown() rutinen skickar vbKeyDown istället för KeyCode som första argument.

Denna skillnad är dock lätt att missa med standard VBA-formatering:

Få fel kod att se fel ut

Om vi ​​sammanfogar raderna med kolon – och justerar blanktecken så att alla våra anrop till ArrowKeyNav är vänsterjusterade – då framträder inkonsekvensen som smälter in ovan som en öm tumme i koden nedan:

När det ses i sammanhanget med normala funktioner och subrutiner, skiljer sig vårt block av boilerplate-kod tydligt från varandra. Denna distinktion hjälper till att öka signal/brusförhållandet för vår kod:


  1. fel:'Kan inte ansluta till lokal MySQL-server via socket '/var/run/mysqld/mysqld.sock' (2)' -- Saknar /var/run/mysqld/mysqld.sock

  2. Är INSERT RETURNING garanterat att returnera saker i rätt ordning?

  3. Använda INSERT med en PostgreSQL-databas med Python

  4. SQL Server Blocking Query