Vielleicht bin ich damit allein, aber nur wenige Dinge nerven mich wie Leute, die Leerzeichen anstelle von Tabulatoren verwenden. Wie ist das Tippen SpaceSpaceSpaceSpaceeinfacher und intuitiver als das Tippen Tab? Sicher, die Tabulatorbreite ist variabel, aber sie zeigt viel mehr den Einrückungsraum als Leerzeichen an. Das Gleiche gilt für den Rückraum. Rücktaste ein- oder viermal?
Warum empfehlen Sprachen wie Python die Verwendung von Leerzeichen über Tabulatoren?
indentation
Naftuli Kay
quelle
quelle
tab
. Wenn Sie dies in Ihrem bevorzugten Editor nicht konfigurieren können, benötigen Sie einen besseren Editor.Antworten:
Vor allem Konsistenz.
Gelegentlich kommt auch etwas hinzu, das tatsächlich das Leerzeichen verwendet - wie Python: Sagen Sie mir, was passiert, wenn ich das folgende Codefragment ausführe?
Dann gibt es die frustrierenden Fälle, in denen der Editor eines Entwicklers Tabulatoren auf 8 Leerzeichen und ein anderer auf 4 Leerzeichen gesetzt hat und jemand aus irgendeinem Grund 5 verwendet ... Es mag auf einer Workstation völlig normal aussehen, aber dann, wenn es eingecheckt ist SVN und jemand anderes aktualisieren, sie werden ein schreckliches, schreckliches Durcheinander sehen.
Das sind also zwei wirklich gute Gründe, immer konsistent zu sein, egal ob Leerzeichen oder Tabulatoren.
Leerzeichen ermöglichen jedoch weitaus mehr Kontrolle über den Einzug als Registerkarten und erfordern keine spezielle Konfiguration in den Editoren, damit dies funktioniert. (Obwohl es einfacher gemacht werden kann - zum Beispiel in vim, verwenden Sie einfach
set expandtab
, um Leerzeichen einzufügen, wenn Sie die Tabulatortaste drücken.)BEARBEITEN: Und amüsanterweise scheint die Site meine Tabs in Leerzeichen normalisiert zu haben, damit der Browser sie korrekt anzeigen kann. Klicken Sie auf "Bearbeiten", um das Original anzuzeigen, einschließlich der Registerkarten;)
quelle
Dies ist eine gute Diskussion über Einrückungen und Leerzeichen in Python. aus dem Artikel:
In Bezug auf Ihr Argument zum zweimaligen oder mehrmaligen Drücken der Leertaste oder der Rücktaste, da die meisten Quellcode-Editoren eine konfigurierbare Anzahl von Leerzeichen mit einem einzigen Druck auf die Tabulatortaste einfügen und in ähnlicher Weise die Einrückung aufheben, werden keine Tasten mehr gedrückt, wenn Verwenden von Leerzeichen zum Einrücken.
Für mich selbst bevorzuge ich Leerzeichen, da der Code immer mit der gleichen Einrückung angezeigt wird, unabhängig davon, ob ich ihn in einer IDE oder in einem
less
Editor anzeige. dh Räume sind tragbarer.quelle
In Python steuert die Einrückung den Programmablauf und ist daher von entscheidender Bedeutung.
Wenn Sie mit Registerkarten formatierten Code nehmen und ihn so kopieren, dass die Registerkarten geändert werden oder verloren gehen, wird die Struktur des Codes zerstört. Räume sind immer Räume = viel sicherer.
Wenn Sie sich durch die Abnutzung Ihrer Leertaste Sorgen machen, kann Ihr Editor wahrscheinlich so eingestellt werden, dass Tabulatoren automatisch in Leerzeichen konvertiert werden.
quelle
.vimrc
für mich fallen lassen :)set softtabstop=4
, und sowohl TAB als auch BACKSPACE verwenden 4 Leerzeichen als Tabulator. (Nun, zu jedem Tabstop, die Breite als 4 Leerzeichen behandeln)Leerzeichen sollten immer verwendet werden, da Tabulatoren allein für viele Stile nicht flexibel genug sind und das Vermischen von Tabulatoren und Leerzeichen (fast) immer zu einem absoluten Durcheinander führt.
Betrachten Sie als Beispiel für einen Stil, der im Allgemeinen Leerzeichen benötigt , Folgendes:
Wenn Sie nicht bereit sind, alle Ihre Funktionen so umzubenennen, dass sie ein genaues Vielfaches der Registerkartengröße (minus eins in Klammern) sind, reicht dies allein nicht aus.
Beim Mischen von Tabulatoren und Leerzeichen tritt fast sofort ein ernstes Problem auf: Tabulatoren werden nicht auf dieselbe Weise konsistent erweitert. Einige Softwareprogramme behandeln eine Registerkarte als äquivalent zu einer bestimmten Anzahl von Leerzeichen. Andere Software erweitert eine Registerkarte modulo um eine bestimmte Anzahl von Leerzeichen - z. B. beginnt ein Element nach einer Registerkarte immer mit einer Spaltennummer, die ein Vielfaches von (z. B.) 8 ist.
Selbst wenn Sie sicherstellen können, dass keine Leerzeichen mit Ihren Registerkarten gemischt werden, haben Sie dennoch ein Problem: Registerkarten werden auch mit Schriftarten mit variabler Breite schlecht abgespielt. Dieses Problem tritt auf, wenn Sie (zum Beispiel) ausgerichtete nachfolgende Kommentare wünschen:
So wie sie jetzt stehen, sind alle perfekt aufeinander abgestimmt. Bei einer Schriftart mit variabler Breite wird es jedoch hässlich. Bei Leerzeichen können die Kommentare (häufig) leicht falsch ausgerichtet werden. Bei Registerkarten wird die Fehlausrichtung jedoch häufig recht radikal:
Plötzlich wurde der kleine Unterschied in der Breite zwischen dem 'i' und dem 'm' oder 'x' in unserer Schriftart mit variabler Breite auf einen ganzen Tabulator vergrößert.
Das Fazit ist, dass fast jede Änderung in der Art und Weise, wie Sie Code mit Registerkarten anzeigen, egal wie trivial sie erscheint, zu einem unlesbaren Durcheinander führen kann und wird.
Um Ihre anderen Fragen zu beantworten: Andere haben bereits darauf hingewiesen, aber ich kann mir nicht vorstellen, dass jemand in einem Programmiereditor (oder vieles andere) tatsächlich die Leertaste verwendet, um die Leerzeichen einzufügen. Ihre Frage spacespacespacespacelautet also : "Tippen " irrelevant, weil das sowieso niemand tut. Ebenso bei Rückständen: Es ist schwer vorstellbar, dass ein Editor BkSpcviermal gedrückt werden muss , um zu einem vorherigen Tabulator zu gelangen. Daher ist die Frage (erneut) irrelevant.
Fazit: Registerkarten sind in Ordnung, wenn Sie (und nur Sie) jemals Ihren Code betrachten, und Sie tun dies immer nur mit einem einzigen Editor, den Sie (überhaupt!) Niemals neu konfigurieren. Diese Bedingungen sind jedoch nahezu unmöglich Erzwingen Sie, dass es nur eine vernünftige Antwort gibt: Verwenden Sie niemals Tabulatoren.
quelle
Das große Problem ist die Inkonsistenz der "Tab" -Breite, manchmal werden sie als vier Leerzeichen gerendert, manchmal als acht. In vielen Editoren können Sie sie auf 1 bis 9 Leerzeichen einstellen.
Dies macht einen einfachen WYSWYG-Editor zu einem Was Sie sehen, ist das, was jemand anderes bekommen könnte.
Es ist ein besonderes Problem für Python, aber es ist auch ein Problem in einer der "geschweiften Klammern" -Sprachen, da Einrückungen verwendet werden, um menschlichen Lesern Bedeutung zu vermitteln, und durcheinandergebrachte Registerkarten das Lesen des Codes erschweren.
quelle