Att koda är i början svårt och komplicerat. Att samtidigt hålla en sammanhållen stil i hur man skriver sin kod, väljer namn och organiserar sin kod kan snabbt bli både svårt och rörigt. Dessutom finns det flera olika stilar att välja mellan. Vad är rätt här, och hur ska man tänka? I denna bloggpost försöker vi ge dig några enkla tips och råd för att ge dig en god start.
Det finns egentligen inga absoluta rätt eller fel – kompilerar det, så är det ju okej. Men det är oftast någon annan som ska underhålla koden du utvecklar, kanske en kollega eller ett framtida du. Därför är det bra att följa en kodningsstil. Många projekt har redan bestämt vilken stil som ska användas, ofta dokumenterat i projektets README.md-fil i roten. Finns det inte, är det en god idé att tillsammans i utvecklingsteamet komma överens om vilken stil som ska följas.
Ett exempel på en stilguide är Googles stilguide för Java. För att hjälpa dig att snabbt komma igång går vi här igenom några av de vanligaste råden från guiden.
Namngivning
I din karriär som programmerare kommer du att behöva namnge en stor mängd olika saker: paket, klasser, metoder, konstanter, parametrar och mer. I början kan det vara svårt att komma på bra namn, och om man är oförsiktig kan det leda till att koden blir svårläst och därmed svårare att underhålla.
Använd endast ASCII-tecken och siffror. I vissa fall kan det vara motiverat att använda _. Det är ofta en fördel att använda engelska även för de identifierare du själv skapar. Annars kan det lätt bli konstigt, eftersom de flesta programmeringsspråk använder engelska nyckelord (som if, for, case, etc.) och de flesta API:er också använder engelska. Det bästa är alltså att hålla sig helt till engelska i koden.
Paket
Paket namnges med enbart gemener (små bokstäver) och siffror. Använd inte understreck, bindestreck eller andra specialtecken.
// Good example
package com.example.myproject;
// Bad example
package com.example.my_project;
Klasser och gränssnitt
Klasser namnges alltid med UpperCamelCase. Skriv ihop orden och börja varje ord med stor bokstav. Om du skapar en testklass bör klassnamnet avslutas med Test. En klass namnges ofta som ett substantiv eller en substantivfras.
Gränssnitt (interfaces) namnges på samma sätt, men kan ibland fördelaktigt ha ett verb i namnet.
// Good examples
class Character {}
class ImmutableList {}
interface Readable {}
class ImmutableListTest {}
// Bad examples
class fileWrite {}
Metoder
Metoder namnges med lowerCamelCase: det vill säga första ordet skrivs helt med gemener, och varje nytt ord inleds med stor bokstav. Undvik att beskriva hur metoden är implementerad – använd istället verb som tydligt beskriver vad metoden gör.
Parametrar, variabler och konstanter
Parametrar, variabler och icke-konstanta fält använder lowerCamelCase. Konstanter skrivs med UPPER_SNAKE_CASE, det vill säga versaler och understreck. Loopräknare och andra mycket lokala variabler kan ha enkla namn som t.ex. i.
// Good examples
String firstName = "Martin";
static final int SIZE = 10;
static final String[] NON_EMPTY_CARS_LIST = { "Volvo" };
Filorganisation
Det ska vara lätt att navigera i koden. Klasser bör ligga i egna filer som har samma namn som klassen. Spara alltid dina .java-filer med UTF-8-kodning – detta hanteras automatiskt i de flesta moderna IDE:er.
Följ alltid denna ordning i dina .java-filer:
- Eventuell licensinformation
- Paketdeklaration
- Imports
- Exakt en (förstanivå) klass
Separera varje sektion med exakt en tom rad.
Importera aldrig med jokertecken (*), eftersom det gör det svårare att se vilka beroenden koden faktiskt har. Dela upp dina import-satser i två block:
- Statiska importer
- Vanliga importer
När du implementerar en klass är det bra att hålla en konsekvent struktur:
- Börja med klassens fält (members).
- Lägg till metoder på rätt plats, inte nödvändigtvis sist.
- Alfabetisk ordning är en enkel och tydlig lösning om inget annat anges.
Utformning av kod
Det är inte alltid ett krav att använda måsvingar (krullparenteser) runt kodblock, t.ex. efter en if med endast en sats – men det rekommenderas starkt att alltid göra det, för att öka läsbarheten och minska risken för misstag.
if (numberOfParticipants > 10) {
discount = 0.2;
} else {
discount = 0.0;
}
void doNothing() {}
Tomma block får ligga på samma rad, men endast om det är ett ensamt block.
- Använd 2 mellanslag som indrag – inte tabbtecken.
- Skriv endast en sats per rad.
- Att linjera deklarationer eller satser är tillåtet, men inget krav – sådana justeringar kan snabbt bli fel vid ändringar.
Det finns naturligtvis mycket mer att säga om Googles kodstil och vad som är god praxis när man skriver kod. Men som ny utvecklare är detta en god start. Använd en kodstil både när du skriver kod själv och när du kodgranskar eller parprogrammerar.
Det kan ta lite längre tid i början att få koden att se ”rätt” ut – men tiden du sparar i framtiden, när du eller någon annan ska göra ändringar, är ofta betydligt större.