Bedste svar
Lad mig først indlede dette ved at sige, at jeg har været en professionel programmør i omkring 10 år nu og har været beskæftiger sig med programmering i næsten 20 år nu (siden jeg var virkelig ung). Jeg har skrevet PHP, Java, C ++, Python, JavaScript, C #, ASP og QBasic (ja, jeg er gammel). Jeg beskæftiger mig også regelmæssigt med SQL, CSS og HTML.
Jeg har brugt redaktører på Windows, Linux og Mac. Jeg har også brugt redaktører inden for terminalvinduer. Jeg har programmeret professionelt i omkring 10 år nu. Jeg kan fortælle dig fra personlig erfaring, efter at have brugt 30+ redaktører (både teksteditorer som VIM og Nano samt IDEer som Visual Studio og PhpStorm), at standardvisningen for faner i redaktører varierer vildt.
Yderligere, selv når du giver dem de samme indstillinger, har du nogle gange andre underlige og uoverensstemmelser forårsaget af redaktøren eller redaktørens skrifttype. Pladser har simpelthen ikke det problem, fordi de er en standard sprogkonstruktion.
En ting, jeg har bemærket konsekvent, er at de fleste guider til programmeringsstil, såsom PHP-FIG, fortæller dig at bruge mellemrum. Det er faneblad, der bruger mellemrum til at efterligne fanebladets karakter. Nogle gange kaldes smart tabbing.
Dette understøttes i enhver editor, du kan tænke på, der er rimelig moderne. Så argumentet om hastighed er helt latterligt. Hvad angår argumentet om plads taget på disken. Bogstaveligt talt er det ingen, der bryr sig om en halv byte ekstra i din filstørrelse. Hvis det er din bekymring, bliver du kongeligt skruet på diskplads og pris.
Det eneste argument, der er tilbage, er det visuelle display. Det er her mellemrum efterlader tapper i støvet. Du kan ikke se konsistensen i faner, som du ser med mellemrum. Pladser ser ens ud i absolut alle redaktører. Fanerne varierer meget, og hvis du nogensinde skal åbne en fil i en terminaleditor (f.eks. Når du inspicerer noget på en ekstern server), vil du hader at håndtere faner, især når du skal rulle langt til højre i en teksteditor.
Hvis du vil have konsistens og standardisering (især de mest almindelige standarder), bruger du mellemrum. Hvis du kun vil fokusere på latterlige klager og pisse andre devs, du arbejder med, skal du bruge faner.
Svar
Fordelene ved faner i forhold til mellemrum er:
- Individuelle udviklere kan vælge forskellige indrykninger for deres kode.
- De bruger også mindre lagerplads.
Fanerne har dog problemer.
Faner interagerer dårligt med maksimale søjlebredder. Projekt vælger maksimale søjlebredder af flere grunde, herunder at sikre, at udviklere kan gøre side om side-forskelle på deres skærme og sikre, at udviklere kan scanne kode hurtigt. (Lange linjelængder reducerer læsehastigheden. Dette skyldes, at udgivere bruger flere kolonner i lærebøger.)
Lad os antage, at din kodningsstandard angiver en maksimal linjelængde på 80 kolonner.
Den første udvikler udvikler har en linje, der er blevet indrykket fire gange, og de bruger en indstilling med to tagindryk. Dette betyder, at koden er indrykket i 8 kolonner. Udvikleren skriver en fuld linje. Denne linje består af 72 tegn.
Denne kode går til en korrekturlæser. Anmelderen ser på koden ved hjælp af indrykning på 4 tegn. De fire faner er nu 16 tegn brede. Linjen går nu til kolonne 88. Korrekturlæseren beder udvikleren om at afskære 8 tegn.
Den anden korrekturlæser, der kigger på koden, bruger et 8 tegn indrykning. Korrekturlæseren ser på koden ved hjælp af en indrykning på 8 tegn. De fire faner er 32 tegn brede. Korrekturlæseren beder udvikleren om at afskære 24 tegn.
Disse problemer forsvinder, hvis du bruger mellemrum eller angiver en ensartet faneindstilling for organisationen. Hvis du specificerer en fast faneindstilling, har du fjernet et af de primære argumenter for at bruge faner til at begynde med.
Lad os nu overveje et her dokument eller en streng med flere linjer, der indeholder formateret tekst. Du kan muligvis integrere et diagram oprettet med et værktøj som asciiflow eller monodraw. Hvis du bruger faner til indrykning, skal indrykningstegninger bruge en kombination af indrykninger og mellemrum. At få dette til at fungere med forskellige tabulatindryk kræver:
- Brug af en kombination af ledende faner efterfulgt af mellemrum for at justere til en given kolonne. Alle linjer i billedet skal have det samme antal faneblad, ellers ser billedet ikke korrekt ud, når det bruges sammen med andre indstillinger for faneblad.
- Indsættelse af et markørtegn for at angive begyndelsen på det rumafgrænsede afsnit. for eksempel. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Afskaffelse af fanestandarden i disse grafisk-områder.
- Forbudt strenglinjer eller kommentarer med flere linjer.
Alle disse problemer forsvinder, når du bruger mellemrum til dine indryk.