Städa upp din kod!

Att hålla sin kod korrekt indenterad, organiserad och allmänt snygg och lättläst kan vara både viktigare, och enklare, än vad man först kan tro.

Att det är en bra idé att alltid indentera sin kod när man programmerar vet nog de flesta som någon gång har varit i närheten av ett programmeringsspråk. Men att indentera är egentligen bara det första av flera steg som man kan ta för att få sin kod tydligare och mer lättläst, både för sig själv och för andra. Att vara lite lagom övernitisk kan också hjälpa dig att upptäcka fel snabbare.

Förutom indentering finns det många andra möjligheter till formatering som man applicerar på sin kod. Låt oss ta några exempel för vad som kan variera i t ex Java:

  • Hur mycket man indenterar och om man använder mellanslag eller tab-tecken.
  • Om man använder blocknotation (dvs omger koden med { och }) även när det bara är en rad i t ex en loop eller en if-sats.
  • Om man placerar { på samma rad som if-satsen, loopen eller funktionshuvudet eller om man alltid placerar den på en ny rad.
  • Hur långa rader man har och hur och var man radbryter, samt hur man indenterar fortsättningen på en rad.
  • Osv, osv.

I de fall när man har flera möjligheter finns det oftast lika många åsikter som det finns programmerare, och de flesta programmerare är närmast religiöst övertygade om att just de har rätt. Ett bra tips är att alltid undvika dylika diskussioner, de leder aldrig till att någon blir övertygad i alla fall.

Det viktigaste, oavsett vad man väljer, är att vara konsekvent.

Och det enda rimliga sättet att vara helt konsekvent (om man inte t ex lider av tvångstankar som jag gör, och dessutom har oceaner av tid) är att ta hjälp av sin utvecklingsmiljö. I de flesta utvecklingsmiljöer, mer avancerade än "Anteckningar", finns det bättre eller sämre hjälpmedel för att fixa formatering och andra liknande saker automatiskt.

Jag är av dock av övertygelsen att man aldrig ska använda en utvecklingsmiljö till att göra saker som man själv inte skulle kunna göra, utan bara för att spara tid till sådant som man skulle ha kunnat gjort för hand själv. Annars blir man alldeles för beroende av sin miljö. Nybörjarprogrammerare ska sitta med en helt vanlig texteditor och en kompilator, inget mer.

Eclipse

Personligen programmerar jag numera alltid i gratismiljön Eclipse, som är en kraftfull, och väldigt konfigurerbar, miljö som lämpar sig för flera språk, däribland utmärkt för Java. Jag har även programmerat flera andra språk, som t ex PHP eller ColdFusion, i Eclipse.

Formattering

I Eclipse hittar du inställningarna för automatisk kodformatering under Window → Preferences → Java → Code Style → Formatter. Där kan du skapa en egen profil eller använda någon inbyggd, alternativt en som du har fått av någon annan eller laddat ner från nätet.

För att köra automatformateringen väljer du Source → Format när du står i koden. Om du har rader markerade formatteras bara dessa, annars hela dokumentet.

Annan städning

Jag rekommenderar dock att man inte stannar där, utan utnyttjar Eclipse förmågor ytterligare. Under Window → Preferences → Java → Code Style → Clean Up finns det en massa godsaker. Där kan du också skapa en egen profil, som förutom att inkludera de formatteringsregler som du satte upp tidigare även kan göra bland annat följande automatiskt när du väljer Source → Clean Up:

  • Lägga till importer som saknas och ta bort sådana som inte används.
  • Lägga till final för fält, parametrar och variabler som bara tilldelas en gång. (Se ett tidigare blogginlägg för att läsa varför jag rekommenderar att man håller variabler konstanta så långt det bara går.)
  • Sortera metoder, fält etc enligt regler som du själv kan ställa in.
  • Ta bort whitespace i slutet av rader efter texten. De syns inte, men kan ändå ställa till problem eftersom två rader som ser identiska ut inte är det, med allt vad det innebär.
  • Osv, osv.

Det enda problemet med Clean Up är att man så sällan kör det, eftersom de ligger en bit ner i Source-menyn och inte har någon fördefinierad snabbtangentskombination. Det senare kan man dock enkelt lägga till själv i Eclipse i Window → Preferences → General → Keys. Jag har kopplat Clean Up till tangentkombinationen Ctrl+Tab. Numera sitter det så automatiskt i vänsterhanden att jag kör Clean Up mest hela tiden, ofta flera gånger per minut.

Delad kod

När man är ute i verkligheten och programmerar på större projekt är det två saker som nästan alltid gäller:

  1. Man är flera programmerare som är inne och skriver i samma kod, antingen att man jobbar sida vid sida med sina kollegor alternativt att man tar över kod som någon annan har skrivit tidigare.
  2. Någon form av versionshanteringssystem används för att hålla reda på koden och ändringarna till densamma.

Här är det ännu viktigare att ha en bra strategi för hur man formatterar och organiserar koden. Helst ska man använda Clean Up eller liknande och komma överens om en gemensam profil. Den stora anledningen till detta, förutom att det blir lättare att läsa, förstå och ändra i koden om den är konsekvent, är för att undvika "falska ändringar" i versionshistoriken.

Ett versionshanteringssystem jämför koden med tidigare versioner och registrerar alla rader som har lagts till, ändrats eller tagits bort. För att kunna följa historiken är det viktigt att se till att inte fler rader än de som faktiskt har gjorts om ser ändrade ut. Och då vill man inte få med saker som att ett mellanslag i slutet av raden har tagits bort eller att metoderna har sorterats i en annorlunda ordning. Särskilt inte om två eller flera personer ändrar i filen och var och en använder sin egen stil så att det blir en massa ändringar fram och tillbaka, t ex mellan att indentera med mellanslag eller med tab-tecken.

Om bloggaren

Marcus Björkander

Marcus Björkander

Schlagernörd och småbarnspappa med tvångstankar som jobbar som utvecklare på Westbahr i Göteborg. Favoritspråket är Java, som han tidigare har undervisat i vid Chalmers i många år.

 

Nyckelord/tag moln