Beste antwoord
Laat me dit eerst inleiden door te zeggen dat ik nu ongeveer 10 jaar een professionele programmeur ben en Al bijna 20 jaar bezig met programmeren (sinds ik heel jong was). Ik heb PHP, Java, C ++, Python, JavaScript, C #, ASP en QBasic geschreven (ja, ik ben oud). Ik heb ook regelmatig te maken met SQL, CSS en HTML.
Ik heb editors gebruikt op Windows, Linux en Mac. Ik heb ook editors gebruikt in terminalvensters. Ik programmeer nu ongeveer 10 jaar professioneel. Ik kan je uit persoonlijke ervaring vertellen, nadat ik meer dan 30 editors heb gebruikt (zowel teksteditors zoals VIM en Nano als IDEs zoals Visual Studio en PhpStorm), dat de standaardweergave voor tabbladen in editors enorm varieert.
Verder, zelfs als je ze dezelfde instellingen geeft, heb je soms andere rare dingen en inconsistenties veroorzaakt door de editor of het lettertype van de editor. Spaces hebben dat probleem gewoon niet omdat ze een standaardtaalconstructie zijn.
Een ding dat me consequent is opgevallen, is dat de meeste programmeerstijlgidsen, zoals PHP-FIG, je vertellen om tabspaties te gebruiken. Dat is tabben waarbij spaties worden gebruikt om het tab-teken na te bootsen. Soms slim tabben genoemd.
Dit wordt ondersteund in elke editor die je maar kunt bedenken en die redelijk modern is. Dus het argument over snelheid is volkomen belachelijk. Wat betreft het argument over de ruimte die op de schijf wordt ingenomen. Letterlijk niemand geeft om een halve byte extra in uw bestandsgrootte. Als dat uw zorg is, dan krijgt u royaal te kampen met schijfruimte en kosten.
Het enige argument dat overblijft, is de visuele weergave. Dit is waar spaties tabbladen in het stof achterlaten. U zult de consistentie niet zien in tabbladen die u ziet met spaties. Ruimtes zien er in vrijwel elke editor hetzelfde uit. Tabbladen variëren enorm en als je ooit een bestand moet openen in een terminaleditor (bijvoorbeeld wanneer je iets inspecteert op een externe server), zul je een hekel hebben aan het omgaan met tabbladen, vooral als je helemaal naar rechts moet scrollen in een teksteditor.
Als je consistentie en standaardisatie wilt (vooral de meest voorkomende standaarden), dan gebruik je spaties. Als je je alleen wilt concentreren op belachelijke klachten en andere apparaten waarmee je werkt kwaad wilt maken, gebruik dan tabs.
Antwoord
De voordelen van tabs ten opzichte van spaties zijn:
- Individuele ontwikkelaars kunnen verschillende inspringingen voor hun code kiezen.
- Ze gebruiken ook minder opslagruimte.
Tabbladen hebben echter problemen.
Tabbladen werken slecht samen met de maximale kolombreedtes. Project kiest maximale kolombreedtes om verschillende redenen, waaronder ervoor zorgen dat ontwikkelaars zij-aan-zij diffs op hun monitoren kunnen doen, en ervoor zorgen dat ontwikkelaars code snel kunnen scannen. (Lange regellengten verminderen de leessnelheid. Dit is een van de redenen waarom uitgevers meerdere kolommen in leerboeken gebruiken.)
Stel dat uw coderingsstandaard een maximale regellengte van 80 kolommen specificeert.
De eerste ontwikkelaar ontwikkelaar heeft een regel die vier keer is ingesprongen, en ze gebruiken een instelling voor het inspringen van twee tags. Dit betekent dat de code 8 kolommen inspringt. De ontwikkelaar schrijft een volledige regel. Die regel bestaat uit 72 karakters.
Deze code gaat naar een recensent. De recensent kijkt naar de code en gebruikt een inspringing van 4 tekens. De vier tabbladen zijn nu 16 tekens breed. De regel gaat nu naar kolom 88. De recensent vertelt de ontwikkelaar om 8 tekens af te snijden.
De tweede recensent die naar de code kijkt, gebruikt een inspringing van 8 tekens. De recensent bekijkt de code door middel van een inspringing van 8 tekens. De vier tabbladen zijn 32 tekens breed. De recensent vertelt de ontwikkelaar om 24 tekens af te snijden.
Deze problemen verdwijnen als u spaties gebruikt of een uniforme tab-instelling specificeert voor de organisatie. Als u een vaste tabbladinstelling specificeert, heeft u een van de belangrijkste argumenten voor het gebruik van tabbladen om mee te beginnen geëlimineerd.
Laten we nu eens kijken naar een document of een tekenreeks met meerdere regels die opgemaakte tekst bevat. U kunt een diagram insluiten dat is gemaakt met een tool zoals asciiflow of monodraw. Als u tabs gebruikt voor inspringingen, moet u bij tekeningen voor inspringen een combinatie van inspringingen en spaties gebruiken. Om dit te laten werken met verschillende tabinspringingen vereist:
- Het gebruik van een combinatie van voorlopende tabs gevolgd door spaties om uit te lijnen met een gegeven kolom. Alle regels in de afbeelding moeten hetzelfde aantal tab-inspringingen hebben, anders ziet de afbeelding er niet correct uit wanneer deze wordt gebruikt met andere tab-inspringingsinstellingen.
- Een markeringsteken plaatsen om het begin van het door spaties gescheiden gedeelte aan te geven. bijv. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Het verlaten van de tabstandaard in deze grafisch-achtige gebieden.
- Outlaw meerregelige strings of commentaren.
Al deze problemen verdwijnen wanneer u spaties gebruikt voor uw inspringingen.