VBA-programmerarens 10 budord
Jag har samlar några tips för att skriva bättre VBA-kod för makron och mallar i en artikel som jag kaxigt valt att kalla "VBA-programmerarens 10 budord".
Om du någon gång gjort ett makro bör du läsa den!
Mvh // Johan

Bra, men #6 håller jag inte med om. Förkunskaperna hos den som läser koden har du ingen aning om. Såvida inte du är den ende som läser koden.
Du kan lika gärna döpa din subrutiner och funktioner bra och få inbyggt dokumentation. Gör subrutinen så mycket att du skulle behöva kommentera delstegen är det för mycket koden i den.
Jag är medveten om att punkt 6 är radikal, men den fungerar. Den enda gången jag skriver kommentarer i kod är för att poängtera varför man gjort något udda, typ:
intRowsInRegions = GetDataRegion().Columns.Count - 2 ' Dra av för rubrikrad och totalrad.
Skulle jag verkligen leva som jag lär hade jag gjort en ny funktion för det, så här:
intRowsInRegion = GetDataRegionNoHeaderAndTotal().Columns.Count
Iom att jag förmodligen behövt veta denna siffra många månger hade det nog blivit en ny funktion eftersom jag följer "Gör om gör rätt".
Faktum är att de flesta skriver rätt sopiga kommentarer iaf, så de fyller ingen funktion någon. Oavsett förkunskaper. Och efter 3 månader fyller de ingen funktion för den som skrev koden från början heller.
Mvh // Johan
Det där är en intressant diskussion oavsett programmeringsspråk tycker jag.
Ibland handlar det ju också om optimering. Program kan arbeta _mycket_ snabbare om man skriver extremt optimerad kod, men ofta blir den svårläst och måste dokumenteras ordentligt.
Att skapa subrutiner/funktioner för varje liten detalj som ska genomföras kan istället orsaka väldigt stökig kod där exekveringen tar längre tid om inte programspråkets kompilator kan optimera väl "själv".
Man får ju känna efter lite vad som är *en* uppgift. Om du skickar ett mail så ska man ju sätta egenskaper för mailserver, ämne, brödtext, avsändare och mottagare. Kanske tio rader kod totalt. Detta ser jag som en uppgift.
Om det däremot krävs en massa If-satser eller annan kod för att ta reda på vilken adress man ska skicka till, blir det en egen funktion som heter typ GetRecipient().
Jag tycker man kan se optimeringen ur två perspektiv. Människa och maskin. För att vara snabb och rörlig behöver man optimera för båda.
Mvh // Johan