Tabulatoren versus Leerzeichen - Was ist das richtige Einrückungszeichen für alles, in jeder Situation, jemals? [geschlossen]


84

In den Codierungsstandards für den auf drupal.org gehosteten Code wird empfohlen, zwei Leerzeichen zum Einrücken des Codes zu verwenden. Andere Websites empfehlen die Verwendung von Tabulatoren, um den Code einzurücken.

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



13
IDE Standard FTW - drücken Sie einfach die Tabulatortaste und sehen, was passiert
user281377

Was auch immer Sie wählen, es muss vom gesamten Team verwendet werden, aber nicht, wenn Sie Tabulatoren oder Leerzeichen verwenden.
Schüler

1
Ich habe versucht, dies zu bearbeiten, um die Implikation zu korrigieren, dass Tabulatoren / Leerzeichen die einzige Möglichkeit sind, Code einzurücken. Die Bearbeitung wurde entfernt, aber hoffentlich bleibt dieser Kommentar erhalten: Verwenden Sie anstelle von Einrückungszeichen stattdessen den linken Rand. - Dies kann vom Editor vollständig automatisiert werden, und Textverarbeitungsprogramme tun dies seit Jahrzehnten.
pgfearo

4
Ich denke wirklich nicht, dass es hier eine "akzeptierte" Antwort geben sollte. Die Tatsache, dass die Antwort mit weniger Stimmen tatsächlich die erste ist, ist ein Beweis dafür: Warum sollte der Fragesteller eine besondere Befugnis erhalten (dh seine Lieblingsantwort an die erste Stelle stellen können), nur weil er die Frage gestellt hat?
Dean Harding

Antworten:


129

Räume

Ein Tab kann abhängig von Ihrer Umgebung eine andere Anzahl von Spalten enthalten, ein Leerzeichen ist jedoch immer eine Spalte.

In Bezug auf die Anzahl der Leerzeichen (oder Tabulatoren), die den Einzug ausmachen, ist es wichtiger, im gesamten Code konsistent zu sein, als einen bestimmten Tabulator-Stopp-Wert zu verwenden.


42
Dein zweiter Absatz ist falsch; die antwort ist 4!
Daenyth

5
@Daenyth - vielleicht, wenn Sie eine geschweifte Klammer verwenden. Die meisten Pascal / Delphi verwendet 2.
Gerry

72
Warum sollte ich für Ihre 2 oder 4 Einrückungsbereiche zuständig sein, wenn eine TAB dynamisch festgelegt werden kann und eine einzelne Einrückungsstufe angibt?
Jé Queue

3
@MGOwen Das Argument der Download-Zeit für die Website-Codierung lässt sich heutzutage leicht lösen, indem die Quellcode-Minimierung auf CSS / Javascript und die Entfernung von Leerzeichen auf HTML angewendet wird. Siehe mod_pagespeed, um zu sehen, was ich meine.
Evan Plaice

42
"Ein Tab kann abhängig von Ihrer Umgebung eine unterschiedliche Anzahl von Spalten enthalten" Ja, das ist genau der Vorteil. Jeder kann es nach seinem Geschmack einstellen und glücklich sein.
Andrea

249

Tabs

Jetzt zählt natürlich die Konsistenz mehr als nur eine, 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 Zeichen, das speziell zum Einrücken gedacht ist
  • Sie ermöglichen Entwicklern mit unterschiedlichen Präferenzen in Bezug auf die Einrückungsgröße, das Erscheinungsbild 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, müssen Sie sich nicht mit Fehlausrichtungen befassen.

12
Wie wäre es, wenn Sie diesen Code mit drei Einrückungen in Ihre Datei mit Tabulatoreinrückungen kopieren, für die Sie drei Einrückungen festgelegt haben? Wenn Sie Ihren Code an Ihre Landsleute senden, fragen sie sich, warum diese Funktion so schlecht eingerückt ist!
Wayne Werner

27
Tabulatoren sind ursprünglich nicht für Einrückungen gedacht, sondern dienen der Tabellierung und leisten schreckliche Arbeit ...
Timwi

14
@ Timwi: Wikipedia scheint zu sagen, dass sie dazu gedacht sind, den Cursor zum nächsten Satz fester Spalten zu bewegen. Klingt nicht so, als ob Tabellierung die primäre Funktion gewesen wäre. Außerdem bezog ich mich auf die Zeit nach der Schreibmaschine.
Fishtoaster

40
Außerdem verbringen viele Programmierer viel Zeit mit dem Schreiben von HTML, CSS usw., da die Tatsache, dass eine Datei mit 4 Leerzeichen anstelle von Tabulatoren 5-15% größer ist, tatsächlich von Bedeutung ist. Beispiel: Diese Seite, auf der Sie sich gerade befinden, wird mindestens 10% langsamer geladen, als sie sein sollte, da das SE-Team Leerzeichen verwendet hat . Überzeugen Sie sich selbst.
MGOwen

23
Ein weiterer Vorteil dieses Ansatzes: Weniger Tastendruck bei Verwendung der Pfeiltasten für die Navigation von links nach rechts.
Nicole

117

Verwenden Sie Tabulatoren, um den Zeilenanfang einzurücken, und zwar jeweils einen Tabulator pro Einzugsebene, und lassen Sie jeden auswählen, wie breit dieser sein soll.

Verwenden Sie Leerzeichen, wenn Sie Zeichen in einer Zeile aneinanderreihen, sodass diese unabhängig von der Größe der Tabulatoren immer aneinanderreihen.

Und finden und lochen Sie alle frühen Software-Autoren, die diese dumme Sache überhaupt erst zum Thema gemacht haben.
(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!)


33
Ja ja ja ja ja. Einhundert Prozent ja. Auf diese Weise kann jeder seine eigene Tabulatorbreite festlegen, während die Formatierung der Tabellen beibehalten wird. Wenn Sie sich Sorgen machen, dass Sie innerhalb von 80 Spalten bleiben (wie Sie es wahrscheinlich sollten!), Wählen Sie einfach eine beliebige maximal zu erwartende Tabulatorgröße (z. B. 4) und halten Sie die Ränder für Tabulatoren in dieser Breite ein. Ehrlich gesagt, ist das so schwierig?
Jon Purdy

Ja, aber verwenden Sie keine Leerzeichen, um innerhalb einer Zeile auszurichten. Ihre Kollegen verwenden möglicherweise eine proportionale Schriftart, sodass Ihre ASCII-Grafik auf ihren Bildschirmen merkwürdig aussieht.
Papierstau

3
Dies ist die einzig richtige Antwort hier
J. Ashworth

76

Tabs

  • Fehler auffälliger werden lassen , es ist ärgerlich, Mikromanagement auf Leerzeichen anzuwenden.
  • sind konsistent , sie werden nur zum Einrücken verwendet, es sei denn, Sie kommentieren falsch.
  • anpassbar sind , können Sie in den Optionen des Editors festlegen, wie breit sie sind.
  • sind produktiver , warum 4 Leerzeichen eingeben, wenn Sie 1 Tabulator drücken können.
  • Nehmen Sie weniger Größe als mehrere Leerzeichen.
  • nimm mehr Raum als einen Raum.
  • Nehmen Sie sich weniger Zeit, um durchzugehen .
  • neigen dazu, besser in IDEs zu arbeiten.

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

Auch zum Ausrichten von Parametern und Kommentaren funktionieren Registerkarten noch besser .


24
Um "produktiver" zu werden, drücke ich persönlich die Tabulatortaste und lasse die IDE die Konvertierung durchführen, um die entsprechende Anzahl von Leerzeichen einzuführen. Vielleicht musst du das upgraden: p?
Matthieu M.

3
-1: Weitere auffällige Fehler: nicht wahr; konsistent: kaum anpassbar: ja, aber gleichzeitig nachteilig; Produktiver: Nicht wahr, praktisch alle IDs können Tabulatoren in Leerzeichen umwandeln. weniger groß: ja, aber praktisch? Nein; weniger Zeit: nein mit vernünftiger IDE; neigen dazu, besser zu funktionieren: überhaupt nicht, wenn Sie mehrere Umgebungen und Tools verwenden
MaR

@ MaR: Bemerkenswerte Fehler sind wahr, die Breite eines Tabs ist größer. Auch ... Python! Tabulatoren sind konsistent, da ein einzelner Tabulator ein Einzug ist, während Sie ansonsten definieren müssen, wie viele Leerzeichen Sie für einen Einzug verwenden. Anpassung ist von Vorteil. Sie verwenden in erster Linie Registerkarten, um eine höhere Produktivität zu erzielen. Scheint, Sie können nicht einmal eine gute Begründung geben, warum es unpraktisch ist, Hasser werden hassen ...;)
Tamara Wijsman

@TomWij: Wie ist der Tabulator größer als die entsprechende Anzahl von Leerzeichen? Python ist praktisch die einzige Sprache, in der Whitespace-Zeichen für die sichere Verwendung von Tabulatoren verwendet werden können (es bietet jedoch nur geringe Vorteile gegenüber "Leerzeichen einfügen"). Probieren Sie auch andere Sprachen, Legacy-Umgebungen, Diffs / Merges, Terminals und sccs aus, um zu sehen, warum Tabs immer noch als "ideal" gelten.
11.

@MaR: Wo habe ich "äquivalente Anzahl von Leerzeichen" angegeben? Ich habe all das ausprobiert, Tabs funktionieren perfekt!
Tamara Wijsman

41

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

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

Ja, mit Tabulatoren können Sie die 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 kann man 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, dessen Tabulatoren auf 8 Spalten festgelegt sind, ist störend.

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


6
Sie können einen Editor wie Kate bekommen, der Tabulatoren mit einem "Geister" -Zeichen präsentiert - ich kann Tabulatoren und Leerzeichen beim Codieren leicht erkennen.
HorusKol

8
Jeder Editor hat jetzt die Option "Whitespace anzeigen" und Visual Studio die Option "Tabify"
Chris S

2
Gutes Argument. Das ist der Grund, warum ich es aufgegeben habe, Leute davon zu überzeugen, dass Tabs logischer sind. Sogar Programmierer, die an abstraktes Denken gewöhnt sein sollten, scheinen Tabulatoren und Leerzeichen zu verwechseln ("Wenn es wie vier Leerzeichen aussieht, müssen es vier Leerzeichen sein!"). Der Nagel im Sarg war für mich, dass es unmöglich zu sein scheint, Emacs so zu konfigurieren, dass er nur mit Tabulatoren eingerückt wird.
Martin Vilcans

3
+1 Die Tab-Utopie ist großartig, aber jedes Mal, wenn ich Code zwischen Editoren mit unterschiedlichen Tab-Breiten verschoben habe, wurde der Code durcheinander gebracht und falsch ausgerichtet. Es ist zu einfach, mit Tabulatoren im Stillen das Falsche zu tun.
Mankarse

Ich habe früher auch Tabulatoren verwendet, aber ich hatte Probleme mit einigen IDEs, die keine Leerzeichen für Fortsetzungszeilen einfügen konnten, und ich hasste es, all diese automatisch eingefügten Tabulatoren durch Leerzeichen zu ersetzen (Visual Studio war eine davon). Also blieb ich bei Leerzeichen. Mit Plus-Leerzeichen können Sie Einrückungen mit halber Größe für Dinge wie public:in C ++ - Klassendeklarationen verwenden, damit sie hübscher aussehen (insbesondere bei verschachtelten Klassen).
szx

31

Einige relevante Meinungen, die von Interesse sein könnten:


105
Nur weil du berühmt bist, machst du es nicht richtig.
Jé Queue 10.12.10

@ Xepoch: hast du ihre Begründung gelesen :)?
Matthieu M.

5
@Matthieu M., ja ich habe jeden gelesen, bin aber trotzdem nicht einverstanden. Ich mag auch keine Oliven, aber ich irre mich auch nicht, weil es andere tun. Ich finde es lächerlich, dass die Leute den Tabulator nicht zum Einrücken benutzen, aber deshalb nennen sie sie CS
Holy

2
@Xepoch: ja, ich nehme an, jeder hat ein Recht auf seine Meinung :) Ich denke allerdings, dass Guido auf das Hauptproblem hingewiesen hat: Tabs und Leerzeichen zu mischen ist böse, weil beide dem Benutzer als "Leerzeichen" erscheinen.
Matthieu M.

3
@Fishtoaster: Wenn Sie sagen, dass Joel Leerzeichen sagt, sollte der Link dann nicht zu einem tatsächlichen Joel-Zitat führen? Der Link führt nur zum JoelOnSoftware-Forum, in dem einige Leute (die wahrscheinlich nicht für Joel sprechen) Tabulatoren und Leerzeichen diskutieren.
Andreas Magnusson


20

Ich absolut. Hass. 4. Leerzeichen.

Warum? Hauptsächlich, weil ich es leid bin, mit einer Tastatur durch meinen Code zu navigieren und ständig drücken left left left leftzu müssen, um eine Einrückung zu überspringen. Dies ist aus früheren Versionen von Notepad ++ und sogar aus Windows-Notepad hervorgegangen, in denen es keine Formatierungsschaltfläche gab. Ich hatte so viele Probleme, wenn die Leute nur 3 benutzten, wenn ich unter anderem überall 4 benutzt 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 es, space space space spacewenn ein einfaches tabfunktionieren würde? Warum sollten IDEs mit 2-5-stelligem Code umgehen und korrekt formatieren müssen, wenn eine einfache Registerkarte und eine Einstellungsoption funktionieren würden?

Leider bin ich die Minderheit.


31
Das Durchsuchen von Tastaturcodes ist ineffizient. Sie sollten STRG + LINKS und STRG + RECHTS verwenden, um durch Leerzeichen und Token zu springen. Einrückungen spielen also keine Rolle.
Wizard79

7
Woher kommt dieses Missverständnis, dass „Tabs speziell für Einrückungen existieren“? Tabulatoren werden Tabulatoren (tabulators) genannt, weil sie für die Tabellierung und nicht für die Einrückung entwickelt wurden und in beiden Fällen schreckliche Arbeit leisten.
Timwi

7
@Lorenzo: Sie sind ineffizient beim Durchsuchen von Tastaturcodes. Sie sollten wund b(oder eund ge) verwenden, um Leerzeichen und Token zu überspringen: P
R. Martinho Fernandes

6
Um teuflischer Fürsprache willen: Verursachen Sie keinen schlecht formatierten Code bei Editoren, die Sie für minderwertig halten. Verwenden Sie Tabs.
Jon Purdy

11
@ Timwi: Entschuldigung, Necro, aber die Computertaste wurde NICHT für die Tabellierung erfunden. Die TYPEWRITER-Version dieser Taste war, aber zu der Zeit, als Tastaturen für die Verwendung mit Computern entwickelt wurden, wurde die Tabulatortaste mehr zum Einrücken als zum Tabulieren verwendet, und der Begriff "Tabulatortaste" war zum Synonym für Einrücken geworden. Registerkarten für COMPUTER müssen eingerückt werden, und der Name der Taste stimmt nur vereinbarungsgemäß mit dem der Schreibmaschine überein. Ihr Argument ist vergleichbar mit der Behauptung, dass die Computer-Return-Taste dazu gedacht war, eine neue Zeile zu beginnen und den Cursor ganz nach links zu bewegen, da dies in einer Schreibmaschine der
Fall war

12

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

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


3
Das bricht ab, sobald Sie für etwas anderes als das Verschachteln von Anweisungen einrücken. Wenn Sie beispielsweise Funktionsargumente in derselben Spalte ausrichten möchten, eines pro Zeile. Es ist möglich, Tabulatoren und Leerzeichen zu mischen, aber sehr mühsam.
3.

2
Es ist überhaupt nicht langweilig, da Sie den größten Teil des Weges durchlaufen und dann nur ein paar Leerzeichen verwenden können, anstatt Dutzende von Leerzeichen eingeben zu müssen, um zur richtigen Spalte zu gelangen.
Jordan Reiter

1
@finnw Sie nehmen an, dass jeder eine monospaced Schriftart verwendet - im Jahr 2012 wird eine erhebliche Anzahl von Entwicklern proportional verwendet. Wenn Sie links neben Ihrem ersten Argument Zeichen ohne Leerzeichen verwenden, können Sie nicht garantieren, dass die Argumente in den folgenden Zeilen für alle gleich sind.
Papierstau

Sie haben noch nie versucht, HAML zu schreiben, oder?
Alt

2
Ich hasse es, das zu sagen, aber ich kann mir nicht vorstellen, in einer Schriftart variabler Breite zu programmieren. Die bloße Falschheit davon stellt Standards in den Schatten , Tabulatoren gegen Leerzeichen, alles ... werde ich gerade alt? (Was passiert, wenn Sie eine Fehlermeldung mit einer Zeilen- und einer Spaltennummer erhalten?)
lunchmeat317

10

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 sie sehen in jedem Editor gleich aus - sogar in Vi.


9
vi (oder besser gesagt vim) ist einer der besseren Editoren für die Arbeit mit Tabulatoren. Sie können nicht nur die Tabulatorenbreite festlegen und automatisch auf Leerzeichen erweitern (wie es die meisten Editoren können), sondern auch die softtabstopOption und die Befehle retabund retab!.
3.

Würden Babys wirklich sterben, wenn wir nur 4 Felder sagen , überall, immer, keine Wahl - und weiterziehen würden?
MGOwen

2
Vier Felder sehen nicht überall gleich aus. Jetzt wählen immer mehr Programmierer proportionale Schriftarten in ihrer IDE, um ein angenehmeres und produktiveres Programmiererlebnis zu erzielen. In diesen Situationen können vier Leerzeichen wie ein winziger Einzug aussehen.
Papierstau

8

Leerzeichen: Wenn Sie Kommentare rechts vom Code ausrichten oder Funktionsparameterlisten, komplexe mehrzeilige Ausdrücke oder ähnliche Elemente verwenden, möchten Sie, dass Ihre schöne Arbeit für alle Benutzer richtig angezeigt wird . Wenn Sie Tabulatoren verwenden und es Benutzern ermöglichen, ihre Tabulatoren unterschiedlich festzulegen, wird die Ausrichtung mit Ausnahme der einfachsten Fälle von Codeeinrückungen unterbrochen.

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


Das ist eine wirklich gute Eigenschaft vieler Redakteure - die Fähigkeit, schnell durch Hügel und Hügel von Räumen zu gehen.
Christian Mann

18
Klingt so, als würden Sie ASCII-Kunst zeichnen und nicht codieren.
rmac

3
Ich würde hinzufügen: Tabs dürfen nicht zur Ausrichtung verwendet werden. Wenn Sie Tabulatorbenutzer sind und ausrichten möchten, müssen Sie zuerst die richtige Anzahl von Tabulatoren für den Einzug und DANN die richtige Anzahl von Leerzeichen für die Ausrichtung eingeben. Nur dann wird tabulatorformatierter Code für alle Benutzer und Editoren angezeigt.
15.

6

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

Leider sind Tabs ungleichmäßig implementiert, sodass die einzige Lösung für die reale Welt 4 Leerzeichen sind.


8
Seit wann werden Tabulatoren für den Einzug per Definition verwendet? Nach ihrer Definition wurden sie für die Tabellierung erfunden (obwohl sie auch dabei einen schrecklichen Job machen).
Timwi

2
Technisch wurde die Eingabetaste erfunden, um den Schreibmaschinenkopf an die Vorderseite der Zeile zu bewegen, wohingegen das Bewegen zur nächsten Zeile durch Drehen der Walze durchgeführt wurde. Später würde die Eingabetaste auch die Walze automatisch vorschieben. Auf der Return / Enter-Taste sehen Sie jedoch nicht, dass alle Leute aufgehängt sind. Die Tabulatortaste wurde den Computern eindeutig hinzugefügt, um das Einrücken durchzuführen. Es ist ein digitales Analogon des Tabstopps, den ich auf meiner alten nicht elektrischen Schreibmaschine hatte. Tabstopps können so eingestellt werden, dass die Walze in jede von Ihnen gewählte Position bewegt wird. Dies ist nahezu identisch mit der aktuellen Rolle der Tab-Taste beim Einrücken.
Jordan Reiter

@JordanReiter RE: "Sie sehen jedoch nicht, wie Menschen auf der Return / Enter-Taste hängen bleiben.": Haben Sie noch nie CR (Bewegen des Schreibmaschinenkopfs nach vorne) / LF (Drehen der Walze) gesehen? zur nächsten Zeile) Fragen?
Max Nanasy

1
Ja, aber das ist wirklich ein Betriebssystemproblem, kein Tastaturproblem. Unabhängig davon, auf welchem ​​Computer Sie sich befinden, müssen Sie entweder die Eingabetaste oder die Eingabetaste drücken, um zum nächsten Link zu gelangen. Sie verwenden nicht einen Schlüssel, um einen Zeilenvorschub und einen Wagenrücklauf auszugeben.
Jordan Reiter

4

Sie brauchen offensichtlich einen Kombinationsansatz.

Wenn Sie Code mit anderen Entwicklern teilen, müssen Sie ihn standardisieren. Da dies unmöglich ist (koff koff), müssen Sie dafür sorgen, dass alle Benutzer vier Leerzeichen verwenden.

Dann brauchen Sie einen Editor, der klug genug ist, nicht dumm zu sein, um zu wissen, dass er eine Zeile mit vier Leerzeichen vorne wie eingerückt behandeln soll. Jede moderne IDE oder jeder Editor von Programmierern kann Code automatisch mit Leerzeichen anstelle von Tabulatoren fließen lassen.


4

Warum kann das nicht jemand 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, wenn alle sein eigenes Format sehen

Ist das so schwer


2
Weil ich nicht genug freie Zeit habe, um alle vorhandenen Editoren und IDEs zu reparieren, die von den Leuten verwendet werden, und - selbst wenn ich das tun würde - es noch schwieriger wäre, alle von einem Upgrade zu überzeugen.
Peter Boughton

Ich bin sicher, sie könnten es in SVN einbauen oder einen anderen Weg finden, die End-Tools wegzulassen.
Adolf Knoblauch

13
Klingt nach Tabs. Jeder Entwickler öffnet die Datei und erhält die gewünschte Einzugsbreite.
rmac

1
Sie können RCS oder CVS bereits für die Verwendung des indentProgramms einrichten .
Jé Queue 10.12.10

3
und es ist ratsam, Einzug zu verwenden, um das Einrücken / Code-Foramtting zu erzwingen, damit Entwickler mit lustigen Abstandsideen nicht für all diese Formatierungsänderungen verantwortlich gemacht / kommentiert werden
Tim Williscroft

3

Leerzeichen oder Tabulatoren - Was Atwood wirklich sagt, ist, eine Sache auszuwählen und in Ihrem Projekt konsequent zu sein. Das einzig Heilige an der Code-Formatierung ist, sicherzustellen, dass sie konsistent ist, damit der Psychopath, der Ihren Code pflegt, 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.


4
Ich benutze Tabs. Ich weiß nicht, ob Sie eine Python-Programmierung durchgeführt haben, aber es kommt auf die relative Einrückung an. Wenn in Zeile 1 x eingerückt ist und in Zeile 2 x + 1 eingerückt ist, werden mehr Einrückungen berücksichtigt. Einrückungen können doppelte Leerzeichen, vier Leerzeichen und Tabulatoren sein, es spielt keine Rolle, solange Sie konsistent sind.
Macha

@Macha - Danke für das Feedback. Ich habe noch nie mit Python-Entwicklung gearbeitet, aber meine Kollegen haben mir alle gesagt, dass sie Leerzeichen verwenden, so dass es interessant ist, jemanden zu treffen, der Tabulatoren verwendet.
Noah Goodrich

3
Ich benutze Tabs mit Python bei der Arbeit. Es ist schrecklich.
Rhettg

3

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


5
Wie sind sie "nicht konsistent"? Sie sind immer ein einzelnes Zeichen, das eine einzelne Einrückungsebene darstellt. Das ist genau die Definition eines konsistenten Einrückungsschemas. (Und , dass Sie persönlich können, ohne dass jemand anderes zu beeinflussen, machen visuell , dass jede Art und Weise Sie wählen , ist ein Plus .)
Leichtigkeit Rennen in Orbit

3

Anscheinend bringen Tabs in Delphi einiges durcheinander, sodass ich in Delphi keine Tabs verwende.

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


Können Sie ein Beispiel dafür geben? Ich bin ehrlich gesagt neugierig, weil ich Delphi seit 15 Jahren benutze und das noch nie gesehen habe.
GroßmeisterB

1
edn.embarcadero.com/article/10280#4.3 Das ist nur der Styleguide , aber wir hatten einige seltsame Fehler, die ich aufgrund von Tabulatoren nicht erklären kann. Möglicherweise liegt es auch an Visual Source Safe. Ich kann es nicht erklären, es ist nur ein Teil der Überlieferung unseres Unternehmens.
Peter Turner

1
Das Problem ist, dass die Standardinstallation für (mindestens) einige Versionen von Delphi nicht mit den üblichen Delphi-Idiomen übereinstimmt. Am Ende haben Sie also Code, der BEIDE enthält.
Gerry

3

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

Die einzige Möglichkeit, Code mit unterschiedlichen Formatierungsstilen fehlerfrei und flexibel zu formatieren, besteht darin, den Code virtuell, dh ohne Einrückungszeichen, zu formatieren. Der einzige mir bekannte Code-Editor, der dies unterstützt, ist der im folgenden Beispiel verwendete:

Der folgende Screenshot zeigt die virtuelle Formatierung in einem XSLT-Editor *, der diese Einrückungsmethode verwendet (hier ist auch ein kurzes Video zu sehen ). Jedes Zeichen in der XSLT wurde zur Veranschaulichung gelb hervorgehoben, damit die einzigen Tabulator- oder Leerzeichen im Inhalt klar erkennbar sind. Die Codeeinrückung wird vom Rendering-System des Editors übernommen, indem der linke Rand (der einen weißen Hintergrund hat) angepasst wird.

Bildbeschreibung hier eingeben

Die einzigen führenden Leerzeichen stehen vor den Buchzeilen , da es sich um wörtlichen Text und nicht um Code handelt. Diese Leerzeichen müssen beibehalten werden.

Bei der virtuellen Formatierung wählen Sie die Einrückungsbreite, die der Umgebung und dem Einrückungsstil entspricht, 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:

Bildbeschreibung hier eingeben

Um dies der Formatierung von Leerzeichen entgegenzusetzen, wird dasselbe XSLT, das in einem Editor ohne virtuelle Formatierung geöffnet wurde, vom Auto-Formatierer dieses Editors folgendermaßen transformiert:

Bildbeschreibung hier eingeben

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 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: Für den Inhalt sollten Zeichen verwendet werden, und für die Formatierung sollte nach einer alternativen Methode gesucht werden.

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


1
Leider sind Sie Ihrer Zeit wahrscheinlich 50 Jahre voraus. Die offen gesagt absurde Vorstellung, dass Programme Sequenzen von Zeichen sind, ist in den Köpfen der meisten Programmierer noch sehr tief verwurzelt.
Tom Anderson

3

Bisher nicht erwähnt: Es gibt Sprachen (Python, Haskell), bei denen es auf Einrückung ankommt. 1 Zeichen zählt jedoch als 1 Zeichen, sei es ein Leerzeichen oder ein Tabulator, sodass der vom Compiler angezeigte Einzug möglicherweise nicht der gleiche ist, den Sie auf dem Bildschirm sehen, wenn Sie Tabulatoren verwenden.

Daher sind Leerzeichen in Sprachen wie Haskell ein Muss. In Makefiles sind TABS ein Muss. Bei allen anderen ist es eine Frage des persönlichen Geschmacks und heutzutage nicht viel - jeder anständige Redakteur hat den Befehl "(führende) Tabulatoren zu Leerzeichen" und "(führende) Leerzeichen zu Tabulatoren".


2

Früher habe ich Leerzeichen verwendet, aber in letzter Zeit habe ich nur Tabulatoren verwendet, weil Eclipse darauf eingestellt war, als ich es endlich bemerkte. Alle anderen Entwickler in meinem Team verwenden Eclipse. Daher war es sinnvoll, die Tabs zu standardisieren, als wir feststellten, dass wir sie bereits seit Ewigkeiten verwenden und es keinen Grund gab, auf Leerzeichen umzusteigen. Es hat mich überrascht, wie wenig es je gab.

Das Festlegen der angezeigten Tabulatorgröße auf 3 oder 5 Zeichen in Ihrer IDE vereinfacht die Unterscheidung zwischen Codeabschnitten, die durch Leerzeichen eingerückt sind (heutzutage fast immer 4), und solchen, die durch Tabulatoren eingerückt sind, erheblich.


1

Es sind bereits viele Argumente vorgebracht worden, aber niemand hat erwähnt, wohin wir in Zukunft führen könnten .

Tabs noch 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 auch Tabellen, Farbwähler und mathematische Formeln enthalten.

Diese Idee ist nicht zu weit hergeholt. Es war JetBrain der Sprache Oriented Programming Editor Meta Programming System (MPS) , die zuerst machte mir klar , das die gesamte Diskussion löst gleichzeitig eine Menge zusätzlicher Möglichkeiten hinzufügen. (Ja, dies ist mit Editor-Plugins möglich, aber das direkte Bearbeiten von Text fügt im Gegensatz zum Ansatz von MPS so viele unnötige Komplexitäten hinzu.)

Im Gegensatz zu Tabulatoren und Leerzeichen gibt es kleine Nachteile, die beim direkten Arbeiten mit abstrakten Syntaxbäumen 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. Realaxy ist größtenteils auf MPS aufgebaut, einem kommerziellen ActionScript-Editor .

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


0

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 bevorzugter Editor standardmäßig verhält, und wählen Sie 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 er tun soll, 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 Ich bin bereit zu kämpfen :-)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.