Bør man bruke tabs eller spaces?

- Tabs er to spaces ett sted, fire et annet, sier Thomas Arp i Bekk. - Tabs lar utvikleren selv bestemme, sier Eirik Talberg i Netcompany. Debatten ruller videre.

Eirik Talberg i Netcompany, Lars Tønder i Webstep og Johanne Håøy Horn i Bekk mener alle at spaces er riktig valg.📸: Eirik Talberg / Lars Tønder / Bekk
Eirik Talberg i Netcompany, Lars Tønder i Webstep og Johanne Håøy Horn i Bekk mener alle at spaces er riktig valg.📸: Eirik Talberg / Lars Tønder / BekkVis mer

Det føles som om tabs vs. spaces-debatten blant utviklere er like gammel som tiden selv.

På den ene sida kjemper tab-folket. De er tilhengere av det variable tab-tegnet, og vil at det skal representere innrykk i koden deres.

Mekanismen stammer fra gamle skrivemaskiner, hvor man kunne manuelt sette lengden på innrykk, og trykke på tab-knappen for å gå til innrykket. Tab-folket har kjente «tabbere» på sin side; Bill Gates skal nemlig, i følge en Reddit AMA, være en svoren tabber.

På den andre sida kjemper spaces-stammen. De tilbér mellomrom-tegnet, og ønsker en verden hvor all kode er rykket inn med X antall mellomrom.

Det skorter ikke på krigsherrer her heller; medgrunnlegger i Instagram, Mike Krieger, sverger nemlig til mellomrom for innrykk. En undersøkelse på bloggen til StackOverflow har til og med antydet at utviklere som bruker mellomrom tjener bedre.

Men hva er det som egentlig fører til at man ender opp på én av sidene i denne debatten? Og hva foretrekker norske utviklere?

En ikke-diskusjon

Da vi spurte, noe humoristisk, på Facebook om følgerne våre foretrekker tabs eller spaces, gikk tabs seirende ut med 77 prosent, mot 23 prosent for spaces.

Det ble ymtet frempå i kommentarfeltet at dette ikke var et seriøst tema å diskutere lenger. At tabs vs spaces er en slags stereotyp diskusjon som stigmatiserer utviklere. Og ja, det er absolutt et argument med meritter.

315 utviklere svarte på vår uhøytidelige spørreundersøkelse om tabs vs spaces på facebook. 📸: Jørgen Jacobsen
315 utviklere svarte på vår uhøytidelige spørreundersøkelse om tabs vs spaces på facebook. 📸: Jørgen Jacobsen Vis mer

Diskusjonen har nemlig nådd helt ut til situasjonskomedienes verden, gjennom denne scenen i HBO-serien Silicon Valley.

I scenen starter hovedrolleinnehaver Richard Hendricks en krangel med sin nye utvikler-kjæreste. Fordi hun foretrekker mellomrom over tabs.

- Det er ikke en sjanse i havet for at jeg kan være sammen med noen som foretrekker spaces over tabs, roper Hendricks , og forsvinner ut døra.

Enklere verden å forholde seg til

De fleste utviklerne kode24 kontakter svarer først at de tror debatten er ferdig, men lover likevel å forhøre seg internt.

Litt senere på dagen tikker det flere e-poster inn fra utviklere som likevel viser seg å ha en mening om temaet.

Lars Tønder, seniorkonsulent i det Trondheims-baserte konsulentselskapet Webstep, er en av de første som kimer inn. Han forklarer at han opplever noen som har sterke meninger om temaet.

Lars Tønder er seniorkonsulent i Webstep. 📸: Lars Tønder
Lars Tønder er seniorkonsulent i Webstep. 📸: Lars Tønder Vis mer

- Det virker som at konsesus, av en eller annen grunn, er at man skal bruke spaces, forteller Lars.

- Debatten er da typisk om hvor mange spaces man skal bruke, fram til noen sier: «kan vi ikke bare bruke tabs, så kan vi bestemme selv hvordan indenteringen skal se ut?». Det blir da alltid klaging om at det blir vanskelig med hvor man skal ha linjeskift, og hvor vanskelig det er å skulle konfigurere alle editorer til å vise tab til den lengden man selv vil ha. Samt bare generell henvisning til konsensus som visstnok sier at man skal bruke spaces, forklarer han.

Thomas Arp i Bekk forteller han over tid har byttet fra tabs til spaces.

- Etter at jeg litt for mange ganger åpnet filer der utvikleren må ha hatt «tabsize=1», og derfor har lagt inn to til ti tabs, har jeg kommet frem til at verden er enklere å forholde seg til hvis man bruker et felt med en kjent bredde når koden skrives, sier han til kode24.

- Forjævlig på Github

Det kan virke som om mellomrom er vanlig på arbeidsplassene til utviklerne våre. Så hvorfor er det så mange som svarer tabs i vår spørreundersøkelse på Facebook?

Manager hos Bekk, Charlie Midtlyng, hinter til at det kan være historiske årsaker til at enkelte utviklere foretrekker spaces i dag.

- Tabs så forjævlig ut på Github i gamle dager forklarer Charlie Midtlyng i Bekk. 📸: Bekk
- Tabs så forjævlig ut på Github i gamle dager forklarer Charlie Midtlyng i Bekk. 📸: Bekk Vis mer

- I gamle dager så tabs helt forjævlig ut på Github. Det ble mye scrolling ute til høyre. Det er vel egentlig hovedårsaken til at vi «gamlinger» begynte med spaces. Så har vi vel sikkert bare tredd dette nedover øra på alle unge og fremadstormende, som ikke brydde seg, forklarer han med et geip.

Jørund Amsen i Bekk forklarer at han tror ting har blitt snudd på hodet nå.

- Nå bruker folk tabs fordi de selv kan bestemme hvordan det ser ut i sin egen editor. Jeg har snakket med folk som setter sin «tab» til å se ut som lengden av to spaces kun i editoren, selv om det faktiske tegnet er «\t», forteller Amsen.

«Perfekt» oppsett

At tabs skal være mer fleksibelt er en gjenganger når vi snakker med utviklerne.

Eirik Talberg i Netcompany har ikke opplevd en debatt rundt temaet. 📸Eirik Talberg
Eirik Talberg i Netcompany har ikke opplevd en debatt rundt temaet. 📸Eirik Talberg Vis mer

- I de tilfellene folk velger tabs, tror jeg dette er for å gi fleksibilitet for utvikleren. Hvis alt av indentering gjøres med tabs, kan utvikleren selv konfigurere en tab til å være så bred eller smal de vil, og dermed kunne lage sitt eget «perfekte» oppsett, forklarer Python-utvikler Eirik Talberg i Netcompany.

- Tabs gir alle på teamet mulighet til å velge hvordan koden skal se ut, «ref» lesbarhet, forklarer Bekk-utvikler Tarjei Skjærset.

Det virker som alle er enig i at innrykk med tabs gir mer personlig fleksibilitet. Så hvorfor foretrekker de likevel spaces?

«Spaces gir konsistens.»

Foretrekker space i Python

- Spaces gir meg mulighet til å sørge for at koden har visuell struktur og symmetri, forklarer Talberg i Netcompany.

- Spaces er fint for å håndheve indentering, og kan være særdeles viktig i språk hvor whitespace er av syntaktisk betydning, forteller han.

Thomas Arp i Bekk foretrekker spaces. 📸: Bekk
Thomas Arp i Bekk foretrekker spaces.
📸: Bekk Vis mer

- Med spaces sikrer man at man bare har én form for «white space» i kodebasen. Da ser det likt ut mellom forskjellige editorer, og det virker som spaces har blitt konsensus i debatten.

Talberg henviser til et vedtak i stilguiden til språket Python, hvor det klart og tydelig står at mellomrom er den foretrukne innrykks-metoden.

- Spaces gir konsistens, forteller Thomas Arp i Bekk.

- To spaces er to spaces. Uansett om du ser på koden i less, Vim, Idea, VSCode, Github eller Raw. Mens tabs er to spaces ett sted, fire et annet, og åtte et tredje. Og det er ikke alltid mulig å justere.

- Man bruker spaces for å være konsistent med resten av verden, oppsummerer Stian Liknes i Bekk.

Fleksibilitet vs. kontroll

Tilhengere av spaces foretrekker altså mellomrom-tegnet fordi man kan diktere utseende for alle som jobber på en kodebase. Tab-fansen hyller tabs av motsatt grunn: Mulighet for personlige preferanser.

Debatten mellom tabs og spaces handler kanskje ikke så mye om tegnene i seg selv. Men heller om hvordan man ønsker å organisere prosjektet sitt.

Johanna Håøy Horn i Bekk påpeker at alle bruker tab-tasten. 📸: Bekk
Johanna Håøy Horn i Bekk påpeker at alle bruker tab-tasten. 📸: Bekk Vis mer

Er det viktigst at koden ser identisk ut når man titter på naboens skjerm? Eller er det viktigere at utviklere skal kunne få det perfekte oppsettet til sin skjerm?

Og selv om utviklerne vi har snakket med foretrekker mellomrom, er det ingen programmeringsspråk som stopper deg fra å bruke tab-tegnet.

Tidligere ukas-koder, Johanne Håøy Horn i Bekk påpeker at alle jo bruker tab-tasten til innrykk, uavhengig om den tasten er konfigurert til å skrive ut mellomrom eller tab-tegnet.

Du bør likevel være klar for en dårlig mottakelse, om du går for tegnet i koden din.

- Jeg har til syvende og sist ikke så sterke meninger om dette, men brannfakler er gøy, så vi kan godt si at alle som bruker tabs er kjettere, avslutter Talberg i Netcompany med et smil.