it-swarm-eu.dev

Tabulatoren versus Leerzeichen - was ist der richtige Einrückungscharakter für alles, in jeder Situation, jemals?

Die Codierungsstandards für den in drupal.org gehosteten Code schlagen vor, zwei Leerzeichen zum Einrücken des Codes zu verwenden. Andere Websites empfehlen die Verwendung von Registerkarten, um den Code einzurücken.

Was ist der richtige Einrückungscharakter für alles und in jeder Situation? Bitte erläutern Sie die Antwort, die Sie geben.

84
kiamlaluno

Leerzeichen

Eine Registerkarte kann je nach Umgebung eine unterschiedliche Anzahl von Spalten enthalten, ein Leerzeichen besteht jedoch immer aus einer Spalte.

In Bezug auf die Anzahl der Leerzeichen (oder Tabulatoren), die einen Einzug darstellen, ist es wichtiger, im gesamten Code konsistent zu sein, als einen bestimmten Tabulatorwert zu verwenden.

129
user8

Tabs

Jetzt ist Konsistenz natürlich wichtiger als jede andere, und eine gute IDE macht die Unterschiede vernachlässigbar. Das heißt, der Sinn dieses Threads ist es, ein heiliger Krieg zu sein, also:

Ich bevorzuge Tabs:

  • Sie sind ein Charakter, der speziell für Einrückungen gedacht ist
  • Sie ermöglichen Entwicklern mit unterschiedlichen Einstellungen in der Einrückungsgröße, das Aussehen des Codes zu ändern, ohne den Code zu ändern (Trennung von Daten und Präsentation für den sprichwörtlichen Gewinn!).
  • Es ist unmöglich, etwas mit Tabulatoren halb einzurücken. Wenn Sie also Code von einer Website kopieren, die 3 Leerzeichen in Ihre eingerückte Datei mit 4 Leerzeichen verwendet hat, müssen Sie sich nicht mit Fehlausrichtungen befassen.
248
Fishtoaster

Verwenden Sie Tabulatoren, um den Zeilenanfang einzurücken, eins Tabulator pro Einrückungsstufe, und lassen Sie alle auswählen, wie breit das sein soll.

Verwenden Sie Leerzeichen, wenn Sie Zeichen innerhalb einer Zeile aneinanderreihen, sodass sie unabhängig von der Tabulatorgröße immer aneinandergereiht sind.

Und finden und schlagen Sie alle frühen Software-Autoren, die dieses dumme Ding überhaupt zum Problem werden lassen.
(Im Ernst, warum wird das überhaupt diskutiert? Als nächstes werden Sie mir sagen, dass Sie auch mehrere Zeichen für Zeilenumbrüche verwenden möchten!)

117
Peter Boughton

Tabs

  • Ermöglichen, dass Fehler deutlicher wahrgenommen werden . Es ist ärgerlich, mit Mikros auf Leerzeichen zu verwalten.
  • sind konsistent , sie werden nur zum Einrücken verwendet, es sei denn, Sie kommentieren falsch.
  • sind anpassbar , Sie können in den Optionen des Editors angeben, wie breit sie sind.
  • sind produktiver , warum 4 Leerzeichen eingeben, wenn Sie 1 Tab drücken können.
  • nehmen weniger Größe als mehrere Leerzeichen ein.
  • nehmen mehr Platz als ein Raum.
  • Nehmen Sie sich weniger Zeit, um durchzugehen .
  • funktionieren in IDEs tendenziell besser.

Leerzeichen sollten verwendet werden, wenn Tabulatoren völlig unbrauchbar sind.

Selbst zum Ausrichten von Parametern und Kommentaren ist Registerkarten funktionieren immer noch besser .

(

76
Tamara Wijsman

Alle Argumente für Tabs sind theoretisch großartig. Aber...

In der Theorie sind Praxis und Theorie gleich. In der Praxis sind sie nicht.

Ja, mit Registerkarten können Sie Ihre Einrückungsstufe festlegen. Und ja, Sie können eine Kombination aus Tabulatoren und Leerzeichen verwenden, um Dinge auszurichten. Und in einer idealen Welt würde es

In der Realität können Sie den Unterschied zwischen Leerzeichen und Tabulatoren nicht erkennen. Sie scheinen beim Verschieben von Code immer durcheinander zu sein, und das Anzeigen des Codes in einem anderen Programm mit Tabulatoren auf 8 Spalten ist ein Ärgernis.

Ich habe früher Tabs verwendet. Dann fing ich an, als Teil eines Teams zu arbeiten und Code zu teilen. Ich wurde schnell ein Befürworter von Räumen. Obwohl ich mit der Utopie der Tabulatoren sympathisieren kann, kann ich mir nicht vorstellen, keine Leerzeichen zu verwenden.

41
g .
31
Fishtoaster

Tabs für den Gewinn.

23
Joel Barsotti

Ich absolut. Hass. 4. Leerzeichen.

Warum? Hauptsächlich, weil ich es leid bin, meinen Code mit einer Tastatur zu navigieren und ständig leftleftleftleft drücken zu müssen, um über eine Einrückung zu gehen. Dies wurde aus früheren Versionen von Notepad ++ und sogar aus einfachen Windows-Notepads geboren, in denen es keine Formatierungsschaltfläche gab. Ich hatte so viele Probleme, wenn Leute nur 3 verwendeten, wenn ich unter anderem überall 4 verwendet hatte.

Der andere Grund ist, dass das Tabulatorzeichen speziell für Einrückungen vorhanden ist und erst später für die Navigation übernommen wurde. Warum machen wir spacespacespacespace, wenn ein einfaches tab funktionieren würde? Warum sollten IDEs mit Code und Format mit 2 bis 5 Abständen korrekt umgehen müssen, wenn eine einfache Registerkarte und eine Einstellungsoption funktionieren würden?

Leider bin ich die Minderheit.

20
TheLQ

Ich persönlich verwende gerne Tabulatoren in allem, da jeder Entwickler die Anzahl der Einrückungen pro Tab steuern kann. Auf diese Weise erhalten Sie Flexibilität bei der Anzeige.

Abgesehen davon ahme ich normalerweise zunächst den Codierungsstil in der Datei nach (da ich viel Zeit mit Wartungsarbeiten verbringe).

12
Brandon

Ich glaube nicht, dass es eine richtige Einrückung gibt (zumindest nicht ohne kleinen Krieg).

Persönlich mag ich vier Räume. Sie ermöglichen es mir, Code viel schneller zu lesen und sehen in jedem Editor gleich aus - sogar in Vi.

10
Josip Medved

Leerzeichen, denn wenn Sie Kommentare rechts vom Code oder Funktionsparameterlisten oder komplexen mehrzeiligen Ausdrücken oder ähnlichen Dingen ausrichten, Sie möchten, dass Ihre schöne Arbeit für alle richtig erscheint. Wenn Sie Tabulatoren verwenden und zulassen, dass Benutzer ihre Tabstops unterschiedlich festlegen, wird die Ausrichtung für alle außer den einfachsten Fällen des Codeeinrückens unterbrochen.

Außerdem ist es offensichtlich, dass jeder auf der Welt vim verwenden sollte, was es trivial macht, auch in Dateien mit Leerzeicheneinzug durch "Tabulatoren" einzurücken, nicht einzurücken und durch "Tabstopps" zu navigieren.

8
hobbs

Tabulatoren sind die natürliche und orthodoxe Wahl, da sie per Definition zum Einrücken verwendet werden.

Leider sind die Registerkarten ungleichmäßig implementiert, sodass die einzige reale Lösung 4 Leerzeichen sind.

6
Wizard79

Sie benötigen offensichtlich einen kombinierten Ansatz.

Wenn Sie Code mit anderen Entwicklern teilen, müssen Sie standardisieren, und da dies unmöglich ist (koff koff), müssen Sie alle vier Leerzeichen machen lassen.

Dann brauchen Sie einen Editor, der klug genug ist, um nicht dumm zu sein, um zu wissen, dass er eine Zeile mit vier Leerzeichen vorne so behandeln sollte, als wäre sie eingerückt. Jeder moderne IDE oder Programmierer-Editor kann Code automatisch mit Leerzeichen anstelle von Tabulatoren fließen lassen.

4
Dan Ray

Warum kann das niemand umsetzen:

  • code wird in einem kompakten Format gespeichert, das für das betreffende System von Vorteil ist
  • wenn jeder Entwickler den Code öffnet, wird er genau so formatiert, wie er es möchte
  • wenn sie damit fertig sind, kehren Sie zum kompakten Format zurück

Jeder ist glücklich, denn alle sehen ihr "eigenes" Format

Ist das so schwierig

4
adolf garlic

Ich bin ein Typ mit 4 Leerzeichen, Tabs sind einfach nicht konsistent.

3
Walter

Die Antwort ist, dass es für jede Situation kein einziges geeignetes Einrückungszeichen geben kann. Das Formatieren mit Zeichen ist unflexibel und kann zu Konflikten führen, wenn innerhalb eines Teams verschiedene Stile verwendet werden.

Die einzige Methode, um Code mit verschiedenen Formatierungsstilen fehlerfrei und flexibel zu formatieren, besteht darin, ihn virtuell, dh ohne Einrückungszeichen, auszuführen. Der einzige mir bekannte Code-Editor, der dies unterstützt, ist der im folgenden Beispiel verwendete:

Um virtuelle Formatierung zu demonstrieren, stammt der folgende Screenshot von einem XSLT-Editor *, der diese Einrückungsmethode verwendet (es gibt auch ein kurzes Video hier ). Jedes Zeichen in der XSLT wurde zur Veranschaulichung gelb hervorgehoben, damit die einzigen Tabulator- oder Leerzeichen im Inhalt deutlich sichtbar sind. Der Codeeinzug wird vom Rendering-System des Editors verarbeitet, wobei der linke Rand (der einen weißen Hintergrund hat) angepasst wird.

enter image description here

Die einzigen führenden Leerzeichen stehen vor den Zeilen Books, da dies wörtlicher Textinhalt und kein Code ist. Diese Leerzeichen müssen beibehalten werden.

Bei der virtuellen Formatierung wählen Sie die Einrückungsbreite entsprechend der Umgebung und dem Einrückungsstil aus, ohne die Zeichen in der Quelldatei zu beeinflussen. Sie können die Einrückungsbreite sogar auf 0 setzen, wenn Sie eine abgeflachte Ansicht des Codes benötigen, wie unten gezeigt:

enter image description here

Um dies mit der Formatierung von Leerzeichen zu kontrastieren, wird dasselbe XSLT, das in einem Editor ohne virtuelle Formatierung geöffnet wurde, vom automatischen Formatierer dieses Editors in Folgendes umgewandelt:

enter image description here

Die größeren leeren gelben Blöcke im obigen Screenshot zeigen deutlich die Leerzeichen, die vom Formatierer des herkömmlichen Editors hinzugefügt wurden. Leider können diese jetzt nicht mehr von echten Inhalten unterschieden werden, sodass das XSLT geändert werden müsste, um dieses Problem zu beheben.

Zusammenfassung

XSLT ist möglicherweise ein Extremfall, aber dieses Prinzip gilt für viele Programmiersprachen: Zeichen sollten für Inhalte und eine alternative Methode für die Formatierung verwendet werden.

** Offenlegung: Der XSLT-Editor mit virtueller Formatierung wurde von meiner eigenen Firma entwickelt *

3
pgfearo

Bisher nicht erwähnt: Es gibt Sprachen (Python, Haskell), in denen Einrückungen wichtig sind. 1 Zeichen zählt jedoch als 1 Zeichen, sei es ein Leerzeichen oder eine Registerkarte, sodass die vom Compiler angezeigte Einrückung möglicherweise nicht mit der auf dem Bildschirm angezeigten übereinstimmt, wenn Sie Registerkarten verwenden.

In Sprachen wie Haskell sind Leerzeichen daher ein Muss. In Makefiles sind TABS ein Muss. In allen anderen Fällen ist es eine Frage des persönlichen Geschmacks und heutzutage nicht viel - jeder anständige Editor verfügt über die Befehle "(führende) Tabulatoren zu Leerzeichen" und "(führende) Tabulatoren zu Tabulatoren").

3
Ingo

Leerzeichen oder Tabulatoren - Was Atwood wirklich sagt, ist, eine Sache auszuwählen und in Ihrem Projekt konsistent zu sein. Der einzige heilige Gral der Code-Formatierung besteht darin, sicherzustellen, dass sie konsistent ist, damit der Psychopath, der Ihren Code verwaltet, nachdem Sie sich nicht gezwungen fühlen, die Situation dauerhaft zu beheben.

Das heißt, wenn Sie in Python oder einer anderen Sprache arbeiten, in der Whitespace ein tatsächliches Programmierkonstrukt ist, kann ich mir nicht vorstellen, Tabulatoren zu verwenden.

3
Noah Goodrich

Anscheinend bringen Tabs in Delphi alles durcheinander, so dass ich in Delphi keine Tabs verwende.

Ich mache jedoch alles andere mit Emacs und verwende immer Tabs, da meine Tabs genau dort sind, wo ich sie haben möchte.

3
Peter Turner

Früher habe ich Leerzeichen verwendet, aber in letzter Zeit habe ich Tabulatoren verwendet, nur weil Eclipse darauf eingestellt war, als ich es endlich bemerkte. Alle anderen Entwickler in meinem Team verwenden Eclipse. Daher war es sinnvoll, Tabs zu standardisieren, als wir feststellten, dass wir sie bereits seit Ewigkeiten verwenden, und es gab keinen Grund, sich die Mühe zu machen, in Leerzeichen zu wechseln. Ich war überrascht, wie wenig ein Problem es war.

Wenn Sie die angezeigte Tabulatorgröße in Ihrem IDE) auf 3 oder 5 Zeichen einstellen, wird die Unterscheidung zwischen Codeabschnitten, die durch Leerzeichen eingerückt sind (heutzutage fast immer 4), und solchen, die durch Tabulatoren eingerückt sind, erheblich vereinfacht.

2
Shabbyrobe

Es wurden bereits viele Argumente vorgebracht, aber niemand erwähnte, wohin wir in Zukunft gehen könnten .

Tabulatoren oder Leerzeichen!

Im Idealfall sollte Code als Daten betrachtet und nicht in einer bestimmten Textformatierung gespeichert werden. Jeder Entwickler kann seine eigene bevorzugte Ansicht anwenden. Darüber hinaus sollte diese Ansicht nicht nur auf Text beschränkt sein, sondern kann Tabellen, Farbwähler und mathematische Formeln enthalten.

Diese Idee ist nicht zu weit hergeholt. Es war JetBrains Sprachorientiertes Programmieren Editor Meta Programming System (MPS) , der mir zuerst klar machte, dass dies die gesamte Diskussion löst und gleichzeitig viele zusätzliche Möglichkeiten hinzufügt. (Ja, dies ist mit Editor-Plugins möglich, aber die direkte Bearbeitung von Text führt im Gegensatz zum Ansatz von MPS zu so vielen unnötigen Komplexitäten.)

Im Gegensatz zu Tabulatoren und Leerzeichen gibt es kleine Nachteile, die für die direkte Bearbeitung von abstrakte Syntaxbäume erwähnt werden können. Alles, was benötigt wird, ist, dass die Technologie zu einem kommerziell rentablen Produkt reift. Die ersten Anzeichen dafür zeigen sich. Weitgehend auf MPS aufgebaut, wurde ein kommerzieller Actionscript-Editor Realaxy erstellt.

Ich würde gerne sehen, wie einer der großen Akteure auf das Konzept dieser Technologie springt und sieht, was passiert!

1
Steven Jeuris

Weder ist besser, noch ist schlechter. Das einzig Wichtige ist, konsequent zu sein.

Wenn Sie ein Team von einem sind, wählen Sie, was Sie persönlich mögen. Überlegen Sie, wie sich Ihr Lieblingseditor standardmäßig verhält, wählen Sie jedoch aus, was Sie möchten.

Wenn Sie in einem Team sind, tun Sie, was das Team tut. Zeitraum.

In meinen verschiedenen Jobs habe ich zwei Leerzeichen, vier Leerzeichen, acht Leerzeichen, Tabulatoren, Leerzeichen und Tabulatoren verwendet. Ich glaube, ich habe auch ein Leerzeichen verwendet. Ich sage meinem Redakteur, was zu tun ist, dann denke ich nicht mehr darüber nach, der Redakteur arbeitet die Details aus.

Die einzige andere Sache ist, sicherzustellen, dass Sie einen intelligenten Editor auswählen. Emacs oder vi? Nun das ist ein heiliger Krieg, den ich bereit bin zu führen :-)

0
Bryan Oakley