Bästa svaret
Låt mig först inleda detta genom att säga att jag har varit en professionell programmerare i ungefär tio år nu och har varit har jobbat med programmering i nästan 20 år nu (eftersom jag var riktigt ung). Jag har skrivit PHP, Java, C ++, Python, JavaScript, C #, ASP och QBasic (ja, jag är gammal). Jag arbetar också regelbundet med SQL, CSS och HTML.
Jag har använt redigerare på Windows, Linux och Mac. Jag har också använt redaktörer inom terminalfönster. Jag har programmerat professionellt i ungefär tio år nu. Jag kan berätta från personlig erfarenhet, efter att ha använt 30+ redaktörer (både textredigerare som VIM och Nano samt IDE som Visual Studio och PhpStorm), att standardvisningen för flikar i redigerare varierar väldigt mycket.
Dessutom, även när du ger dem samma inställningar har du ibland andra konstigheter och inkonsekvenser orsakade av redaktören eller redaktörens teckensnitt. Utrymmen har helt enkelt inte det problemet på grund av att de är en vanlig språkkonstruktion.
En sak som jag har märkt konsekvent är att de flesta guider för programmeringsstil, som PHP-FIG, säger att du ska använda flikavstånd. Det är flikar som använder mellanslag för att efterlikna flikkaraktären. Ibland kallas smart tabbing.
Detta stöds i varje redaktör du kan tänka dig som är ganska modern. Så argumentet om hastighet är helt löjligt. När det gäller argumentet om utrymme som tas på disken. Bokstavligen bryr sig ingen om en halv byte extra i din filstorlek. Om det är ditt bekymmer, blir du kungligt skruvad på diskutrymme och kostnad.
Det enda argumentet kvar är den visuella skärmen. Det är här utrymmen lämnar flikar i dammet. Du ser inte enhetligheten i flikar som du ser med mellanslag. Utrymmen ser likadana ut i absolut alla redaktörer. Flikar varierar mycket och om du någonsin måste öppna en fil i en terminalredigerare (säg när du inspekterar något på en fjärrserver) kommer du att hata att hantera flikar, särskilt när du måste bläddra långt till höger i en textredigerare.
Om du vill ha konsekvens och standardisering (särskilt de vanligaste standarderna) kommer du att använda mellanslag. Om du bara vill fokusera på löjliga klagomål och pissa av andra devs du arbetar med använder du flikar.
Svar
Fördelarna med flikar över mellanslag är:
- Enskilda utvecklare kan välja olika indrag för sin kod.
- De använder också mindre lagringsutrymme.
Flikarna har dock problem.
Flikar interagerar dåligt med maximal kolumnbredd. Project väljer maximala kolumnbredder av flera skäl, inklusive att se till att utvecklare kan göra skillnader sida vid sida på sina bildskärmar och se till att utvecklare kan skanna kod snabbt. (Långa linjelängder minskar läshastigheten. Den här anledningen till att publicister använder flera kolumner i läroböcker.)
Låt oss anta att din kodningsstandard anger en maximal radlängd på 80 kolumner.
Den första utvecklaren utvecklaren har en rad som har indragits fyra gånger, och de använder en inställning med två taggar. Detta innebär att koden är indragen 8 kolumner. Utvecklaren skriver en hel rad. Den raden består av 72 tecken.
Den här koden går till en granskare. Granskaren tittar på koden använder flikindrag med fyra tecken. De fyra flikarna är nu 16 tecken breda. Raden går nu till kolumn 88. Granskaren säger till utvecklaren att stänga av 8 tecken.
Den andra granskaren som tittar på koden använder ett 8-tecken indrag. Granskaren tittar på koden med en indrag på 8 tecken. De fyra flikarna är 32 tecken breda. Granskaren säger till utvecklaren att stänga av 24 tecken.
Dessa problem försvinner om du använder mellanslag eller anger en enhetlig flikinställning för organisationen. Om du anger en fast flikinställning har du tagit bort ett av de primära argumenten för att använda flikar till att börja med.
Låt oss nu överväga ett här dokument eller en rad med flera rader som innehåller formaterad text. Du kan bädda in ett diagram som skapats med ett verktyg som asciiflow eller monodraw. Om du använder flikar för indrag måste indragningsritningar använda en kombination av indrag och mellanslag. Att få detta att fungera med olika flikindrag kräver:
- Använd en kombination av ledande flikar följt av mellanslag för att justera till en viss kolumn. Alla rader i bilden måste ha samma antal flikindrag, annars ser bilden inte korrekt ut när den används med andra flikindragningsinställningar.
- Att sätta in ett markeringstecken för att ange början på det avgränsade avsnittet. t.ex. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Överge flikstandarden i dessa grafiska områden.
- Förbjuda flerradiga strängar eller kommentarer.
Alla dessa problem försvinner när du använder mellanslag för dina indrag.