Beste Antwort
Lassen Sie mich zunächst sagen, dass ich seit ungefähr 10 Jahren ein professioneller Programmierer bin und dies auch bin Ich beschäftige mich seit fast 20 Jahren mit Programmieren (seit ich sehr jung war). Ich habe PHP, Java, C ++, Python, JavaScript, C #, ASP und QBasic geschrieben (ja, ich bin alt). Ich beschäftige mich auch regelmäßig mit SQL, CSS und HTML.
Ich habe Editoren unter Windows, Linux und Mac verwendet. Ich habe auch Editoren in Terminalfenstern verwendet. Ich programmiere jetzt seit ungefähr 10 Jahren professionell. Ich kann Ihnen aus persönlicher Erfahrung mit mehr als 30 Editoren (sowohl Texteditoren wie VIM und Nano als auch IDEs wie Visual Studio und PhpStorm) sagen, dass die Standardanzeige für Registerkarten in Editoren stark variiert.
Selbst wenn Sie ihnen dieselben Einstellungen geben, treten manchmal andere Verrücktheiten und Inkonsistenzen auf, die durch den Editor oder die Schriftart des Editors verursacht werden. Leerzeichen haben dieses Problem einfach nicht, da sie ein Standard-Sprachkonstrukt sind.
Eine Sache, die mir durchweg aufgefallen ist, ist, dass die meisten Programmierstil-Anleitungen, wie z. B. PHP-FIG, Ihnen die Verwendung von Tabulatoren empfehlen. Das ist Tabs, die Leerzeichen verwenden, um das Tabulatorzeichen nachzuahmen. Manchmal auch als Smart Tabbing bezeichnet.
Dies wird in jedem Editor unterstützt, von dem Sie denken können, dass er einigermaßen modern ist. Das Argument über Geschwindigkeit ist also völlig lächerlich. Was das Argument über den auf der Festplatte belegten Speicherplatz betrifft. Im wahrsten Sinne des Wortes kümmert sich niemand um ein halbes Byte mehr in Ihrer Dateigröße. Wenn dies Ihr Anliegen ist, werden Sie auf königliche Weise auf Speicherplatz und Kosten geschraubt.
Das einzige verbleibende Argument ist die visuelle Anzeige. Hier hinterlassen Zwischenräume Laschen im Staub. Sie sehen die Konsistenz in Registerkarten, die Sie mit Leerzeichen sehen, nicht. Leerzeichen sehen in absolut jedem Editor gleich aus. Die Registerkarten variieren stark, und wenn Sie jemals eine Datei in einem Terminal-Editor öffnen müssen (z. B. wenn Sie etwas auf einem Remote-Server überprüfen), werden Sie es hassen, mit Registerkarten umzugehen, insbesondere wenn Sie in einem Nur-Text-Editor ganz nach rechts scrollen müssen.
Wenn Sie Konsistenz und Standardisierung wünschen (insbesondere die gängigsten Standards), verwenden Sie Leerzeichen. Wenn Sie sich nur auf lächerliche Beschwerden konzentrieren und andere Entwickler, mit denen Sie arbeiten, verärgern möchten, verwenden Sie Tabulatoren.
Antwort
Die Vorteile von Tabulatoren gegenüber Leerzeichen sind:
- Einzelne Entwickler können unterschiedliche Einrückungen für ihren Code auswählen.
- Sie benötigen außerdem weniger Speicherplatz.
Registerkarten haben jedoch Probleme.
Registerkarten interagieren schlecht mit maximalen Spaltenbreiten. Das Projekt wählt aus mehreren Gründen die maximale Spaltenbreite aus, einschließlich der Sicherstellung, dass Entwickler nebeneinander Unterschiede auf ihren Monitoren ausführen können, und der Sicherstellung, dass Entwickler Code schnell scannen können. (Lange Zeilenlängen verringern die Lesegeschwindigkeit. Aus diesem Grund verwenden Verlage mehrere Spalten in Lehrbüchern.)
Nehmen wir an, Ihr Codierungsstandard gibt eine maximale Zeilenlänge von 80 Spalten an.
Der erste Entwickler Entwickler haben eine Zeile, die viermal eingerückt wurde, und sie verwenden eine Einrückungseinstellung mit zwei Tags. Dies bedeutet, dass der Code 8 Spalten eingerückt ist. Der Entwickler schreibt eine vollständige Zeile. Diese Zeile besteht aus 72 Zeichen.
Dieser Code geht an einen Prüfer. Der Prüfer prüft, ob der Code einen 4-stelligen Einzug auf der Registerkarte verwendet. Die vier Registerkarten sind jetzt 16 Zeichen breit. Die Zeile geht jetzt zu Spalte 88. Der Prüfer weist den Entwickler an, 8 Zeichen abzuschneiden.
Der zweite Prüfer, der den Code betrachtet, verwendet einen Einzug mit 8 Zeichen. Der Prüfer betrachtet den Code mit einem 8-stelligen Tabulatoreinzug. Die vier Registerkarten sind 32 Zeichen breit. Der Prüfer weist den Entwickler an, 24 Zeichen abzuschneiden.
Diese Probleme verschwinden, wenn Sie Leerzeichen verwenden oder eine einheitliche Registerkarteneinstellung für die Organisation angeben. Wenn Sie eine feste Registerkarteneinstellung angeben, haben Sie zunächst eines der Hauptargumente für die Verwendung von Registerkarten entfernt.
Betrachten wir nun ein Dokument oder eine mehrzeilige Zeichenfolge, die formatierten Text enthält. Sie können ein Diagramm einbetten, das mit einem Tool wie asciiflow oder monodraw erstellt wurde. Wenn Sie Registerkarten für Einrückungen verwenden, müssen für Einrückungszeichnungen eine Kombination aus Einrückungen und Leerzeichen verwendet werden. Damit dies mit unterschiedlichen Tabulatoreinzügen funktioniert, müssen Sie Folgendes tun:
- Verwenden Sie eine Kombination führender Tabulatoren, gefolgt von Leerzeichen, um sie an einer bestimmten Spalte auszurichten. Alle Zeilen im Bild müssen die gleiche Anzahl von Tabulatoreinzügen aufweisen. Andernfalls wird das Bild bei Verwendung mit anderen Einstellungen für Tabulatoreinzüge nicht korrekt angezeigt.
- Fügen Sie ein Markierungszeichen ein, um den Beginn des durch Leerzeichen getrennten Abschnitts anzuzeigen. z.B. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Aufgeben des Registerkartenstandards in diesen grafischen Bereichen.
- Verbieten mehrzeiliger Zeichenfolgen oder Kommentare.
Alle diese Probleme verschwinden, wenn Sie Leerzeichen für Ihre Einrückungen verwenden.