Konsten att namnge en variabel

april 10, 2008 13:29 by codemonkey

Som en gammal kodapa har jag sett hur katastrofalt det kan vara att jobba i utvecklingsprojekt där ingen tydlig standard följs vid namngivning av t.ex. variabler. Det kanske låter som en enkel sak, men det finns faktiskt en hel del att tänka på.

Ska man t.ex. programmera på svenska eller engelska? Som svensk är det kanske enklare att hålla sig till det egna språket, men engelska är ju internationellt och kanske bättre lämpat om andra ska in och pilla i koden. Ska man skriva utförliga och självförklarande namn eller förkorta så gott man kan för att hålla nere storleken på det man utvecklar? Hur ska man använda gemener och versaler?

Det finns ingen universell sanning när det gäller namngivning av kod, däremot finns det vissa tumregler som kan hjälpa dig skriva bra och lättförstådd kod. Jag själv har valt att koda på engelska, men kommer att hålla mig till svenska i inlägget för att vara språkligt konsekvent.

När man namnger en variabel är viktigt att hålla i åtanke att namnet på variabeln bör beskriva vad den är. Ett bra sätt att komma på bra namn är att man med ord uppger vad variabeln representerar, ofta blir just förklaringen ett bra namn som är lätt att förstå eftersom det inte består av några konstiga, halvkryptiska förkortningar. Det är entydigt och beskriver sig självt till fullo, och blir på så sätt svårt att förväxla med något annat.

En variabel som representerar totala antalet bokade sittplatser på ett tåg under ett visst år skulle man alltså kunna namnge som antalBokadeSittplatser2008, medan ett namn som bokningar lätt kan förväxlas med några andra sortersbokningar, och namn som b och s är bara att förkasta. Här ser man dock att det inte alltid funkar så bra att ha så beskrivande namn, det är helt enkelt inte praktiskt.

Den optimala längden för namn sägs vara någonstans mellan längden av b och antalBokadeSittplatser2008. För korta namn förmedlar inte tillräcklig mening, och även om man lyckas luska ut vad b är så vet du inget om relationen mellan b och s. För långa namn å andra sidan är jobbiga att skriva och kan förstöra den visuella kodstrukturen. Man brukar säga att applikationer med variabelnamn på mellan 10 och 16 tecken kräver minimalt med ansträngning att felsöka, men det innebär inte att du måste sätta dig och se till att alla namnen håller sig inom den ramen. Däremot kan du med fördel ta dig en titt på hur du namnger dina variabler och om du ser att de generellt är åt det kortare hållet, ta dig en funderare på om namnen är så tydliga som de behöver vara.

När man sen tittar på hur man skriver namnen finns det ett sätt som brukar användas flitigt av väldigt många - camel case. Principen är att man inleder varje första ordet med en gemen och sedan varje nytt ord med en versal, som vi kunde se i exemplet tidigare; antalBokadeSittplatser2008. Det finns en variant på camel case där man även inleder första ordet med en versal. Denna metoden kallas ibland pascal case.

Det var allt för den här gången, det är inte helt omöjligt att jag fortsätter på den här tråden någon gång framöver.

Andra bloggar om: ,


Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Comments

april 12. 2008 21:43

Ett tidlöst ämne! Har hållit på med mjukvaruutveckling snart 20 år, men namngivning är något jag utvecklas inom fortfarande!

Det jag upplevt är att många programmerare saknar vad jag skulle vilja kalla uppskattning för skönlitteratur; de tycker inte om att läsa böcker helt enkelt (även om det tillhör varje programmerares erfarenhetsbank att ha plågat sig själv genom någon tjock engelsk programspråksmanual som tonåring, antar jag!). Och om man inte gillar skönlitteratur, kan det kännas snudd på "perverst" att lägga tid på "skönlitterärt estetiska" metod- eller klassnamn. Är det något du också upplevt?

Olof

april 15. 2008 09:38

Tvärt om skulle jag vilja påstå att de flesta utvecklare jag jobbat med faktiskt uppskattat skönlitteratur nästan mer än någon annan jag känner. Jag gissar att det kan ha att göra med kontrasten till all kod man stirrar på dag ut och dag in, att man vill kunna läsa något utan att behöva ständigt hålla minnesanvändning, aktiva databaskopplingar och allt sånt i huvudet.

Jag hänger inte riktigt med på vad du menar med "skönlitterärt estetiska" metod- eller klassnamn. Orkar du förklara?

codemonkey

april 15. 2008 10:43

Intressant att vi har så olika erfarenhet!

Det är rent statistiskt sett så att bland kamrater som sysslat med programmering, är det få som också gillat att läsa skönlitteratur. Och tvärtom, bland polare som är mer intresserade av fysik eller matematik, finns det flera litteraturintresserade. Såklart ett svepande generaliserande och det bygger bara på min personliga erfarenhet..

Vad jag menar med skönlitterärt estetiska namnval, är t.ex. att använda icke-tekniska termer för variabler och klasser. T.ex. använde jag nyligen ordet "Spider" för en klass som fungerade som ett gränssnitt mot ett legacy-system ("Spindeln i nätet"). Detta namnval skulle många programmerare reagera negativt på är min magkänsla! Ett annat exempel är att kalla en iterator-variabel för "runner", som jag gjorde innan jag ens kände till begreppet iterator. Alltså man använder något bildliga eller "litterära" begrepp för att få ett slags förståelse och känsla för koden.

Olof

april 15. 2008 10:49

Ah då förstår jag. Den stora nackdelen med sådana namn är dock att andra som inte har din magkänsla skulle kunna bli förvirrade av dina namn.

Med det sagt, är du ensam om att pilla i koden så för all del, döp saker så som det känns mest naturligt för dig. Skulle du börja döpa saker annorlunda nu skulle ju du själv kunna bli förvirrad av namnen. Smile

codemonkey

augusti 11. 2009 12:12

Mycket bra artikel! Är det okej att länka dennna från min egen sida?

Anton

augusti 11. 2009 17:10

Ja då Anton, länka på bara! Smile

codemonkey

Add comment


 

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]