Beste svaret
La meg først forord dette ved å si at jeg har vært profesjonell programmerer i omtrent 10 år nå og har vært driver med programmering i nesten 20 år nå (siden jeg var veldig ung). Jeg har skrevet PHP, Java, C ++, Python, JavaScript, C #, ASP og QBasic (ja, jeg er gammel). Jeg arbeider også regelmessig med SQL, CSS og HTML.
Jeg har brukt redaktører på Windows, Linux og Mac. Jeg har også brukt redaktører i terminalvinduer. Jeg har programmert profesjonelt i omtrent 10 år nå. Jeg kan fortelle deg fra personlig erfaring, etter å ha brukt 30+ redaktører (både tekstredigerere som VIM og Nano, så vel som IDEer som Visual Studio og PhpStorm), at standardskjermen for faner i redaktører varierer veldig.
Videre, selv når du gir dem de samme innstillingene, har du noen ganger andre rare og inkonsekvenser forårsaket av redaktøren eller redaktørens font. Mellomrom har rett og slett ikke det problemet på grunn av at de er en standard språkkonstruksjon.
En ting jeg har lagt merke til konsekvent, er at de fleste programmeringsstilguider, som PHP-FIG, forteller deg at du skal bruke fanerom. Det er tabbing som bruker mellomrom for å etterligne tabulatortegnet. Noen ganger kalt smart tabbing.
Dette støttes i alle redaktører du kan tenke deg som er rimelig moderne. Så argumentet om fart er helt latterlig. Når det gjelder argumentet om plass tatt på disken. Bokstavelig talt er det ingen som bryr seg om en halv byte ekstra i filstørrelsen. Hvis det er din bekymring, blir du kongelig skrudd på diskplass og kostnad.
Det eneste argumentet som er igjen er den visuelle skjermen. Det er her mellomrom etterlater tapper i støvet. Du ser ikke konsistensen i fanene du ser med mellomrom. Plasser ser like ut i absolutt alle redaktører. Faner varierer sterkt, og hvis du noen gang må åpne en fil i en terminaleditor (si når du inspiserer noe på en ekstern server), vil du ikke hate å håndtere faner, spesielt når du må bla deg til høyre i en tekstredigerer.
Hvis du vil ha konsistens og standardisering (spesielt de vanligste standardene), vil du bruke mellomrom. Hvis du bare vil fokusere på latterlige klager og pisse andre devs du jobber med, bruk deretter faner.
Svar
Fordelene med faner fremfor mellomrom er:
- Individuelle utviklere kan velge forskjellige innrykk for koden.
- De bruker også mindre lagringsplass.
Fanene har imidlertid problemer.
Faner samhandler dårlig med maksimale kolonnebredder. Prosjekt velger maksimale kolonnebredder av flere grunner, inkludert å sikre at utviklere kan gjøre forskjeller side om side på skjermene sine, og sikre at utviklere kan skanne kode raskt. (Lange linjelengder reduserer lesehastigheten. Dette er grunnen til at utgivere bruker flere kolonner i lærebøker.)
La oss anta at kodingsstandarden din angir en maksimal linjelengde på 80 kolonner.
Den første utvikleren utvikleren har en linje som har blitt innrykket fire ganger, og de bruker en innstilling for to tagger. Dette betyr at koden er innrykket i 8 kolonner. Utvikleren skriver en hel linje. Denne linjen består av 72 tegn.
Denne koden går til en anmelder. Anmelderen ser på koden ved hjelp av innrykk på 4 tegn. De fire fanene er nå 16 tegn brede. Linjen går nå til kolonne 88. Anmelderen forteller utvikleren å kutte av åtte tegn.
Den andre anmelderen som ser på koden, bruker et innrykk på 8 tegn. Anmelderen ser på koden ved hjelp av en 8 tegn-faneinnrykk. De fire fanene er 32 tegn brede. Kontrolløren ber utvikleren kutte av 24 tegn.
Disse problemene forsvinner hvis du bruker mellomrom eller angir en enhetlig faneinnstilling for organisasjonen. Hvis du spesifiserer en fast faneinnstilling, har du eliminert ett av de viktigste argumentene for å bruke faner til å begynne med.
Nå kan vi vurdere et her dokument eller en flerlinjestreng som inneholder formatert tekst. Du kan legge inn et diagram opprettet med et verktøy som asciiflow eller monodraw. Hvis du bruker faner for innrykk, vil innrykkstegninger kreve å bruke en kombinasjon av innrykk og mellomrom. Å få dette til å fungere med forskjellige tabulatinnrykk krever:
- Bruk av en kombinasjon av ledende faner fulgt av mellomrom for å justere til en gitt kolonne. Alle linjene i bildet må ha samme antall innrykk på fanen, ellers ser ikke bildet riktig ut når det brukes sammen med andre innstillinger for faneinnrykk.
- Setter inn et markørtegn for å indikere begynnelsen på den avgrensede delen. f.eks. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Oppgivelse av fanestandarden i disse grafiske områdene.
- Forbudt strenglinjer eller kommentarer med flere linjer.
Alle disse problemene forsvinner når du bruker mellomrom til innrykk.