Eine Grundsatzfrage. Wenn man sich einige Zeit damit beschäftigt hat, in Kooperation mit anderen Code zu schreiben, kommt irgendwann die Frage auf: Ist es sinnvoller Tabs oder Spaces zu nutzen?

Tabs vs. Spaces

Wie kommt es zu dieser Frage? In jeder mir bekannten Auszeichnungs- und Programmier-Sprache, sei es HTML, CSS, PHP, Javascript, TypoScript etc. nutzt man Einrückungen entweder für die Übersichtlichkeit, oder in Whitespace-Sensitiven Sprachen (wie Python oder SASS) um Verschachtelungen auszudrücken.

Tabs können in verschiedenen Text-Editoren verschiedene breiten zugeteilt bekommen. Der eine stellt sie wie zwei Whitespaces da, der andere wiederum wie vier Whitespaces. Oft kann man in den tiefen der Programm-Einstellungen selbst wählen wie man es denn gerne hätte. Aber man stelle sich folgendes Szenario vor:

Team-Mitglied 1 arbeitet u.a. oft mit dem TYPO3-Internen Code-Editor. Dieser wandelt Tabs immer in zwei Whitespaces um. Da es also in seinen eigenen workflow ganz gut passt, sagt er seinem eigenen Text-Editor: "Wenn ich Tab drücke, mach mir da zwei White-Spaces hin."

Snippet des Team-Miglied 1

Team-Mitglied 2 hat einen Text-Editor, bei dem ein Tab ein Tab ist, und dieser die breite von zwei Whitespaces hat. Bearbeitet Team-Mitglied 2 die Vorlage von Team-Mitglied 1 sieht alles super aus. Er erweitert also dessen Code um ein paar Details.

Snippet des Team-Miglied 2

Team-Mitglied 3 hat nur ab und zu mit Programmierung zu tun und arbeitet mit einem Text-Editor, dessen Tab-Breite der Breite von vier Whitespaces entspricht (wie es oft der Fall ist, wenn man alle Einstellungen auf Default lässt). Öffnet er/sie nun die von Team-Mitglied 1 und Team-Mitglied 2 bearbeitete Datei, entsteht spätestens hier der erste sichtbare Fehler. Vergleiche Zeile 4 && Zeile 7:

Snippet des Team-Miglied 3

An diesem Beispiel kann man sich sicher noch darüber streiten, ob daran die Welt nun untergeht, doch überträgt man dieses Beispiel auf ein umfangreiches Projekt, dann wird's hässlich.

Line-Endings

Und hier ein weiteres Problem in der Code-Formatierung: Hat Team-Mitglied 1 seine Datei mit Windows-Line-Endings angelegt und Team-Mitglied 2 kommt mit seinem Mac-Text-Editor daher bekommt er möglicherweise überall doppelte Zeilenumbrüche dort angezeigt, wo ursprünglich nur ein Zeilenumbruch vorhanden war. Speichert dieser die Datei wieder (möglicherweise ohne es selbst zu merken) mit anderen Line-Ending-Settings ab, sorgt er dafür, dass alle seine Kollegen sich nun auch an den doppelten Zeilen-Umbrüchen erfreuen dürfen.

Fazit

Einigt man sich mit den anderen Team-Mitgliedern nicht auf einen einheitlichen Umgang in der Formatierung, kommt es ggf. zu unschönen Vermischungen von Whitespaces, Tabs und Line-Endings, die der Übersichtlichkeit nicht grade dienen, oder sogar zur Unbrauchbarkeit führen können.

In meinem aktuellen Team haben wir uns bisher darauf geeinigt, vier Whitespaces, keine Tabs und Unix-Line-Endings zu verwenden.

Was denkt ihr dazu? Sind euch weitere Fallstricke bekannt? Was sind eure Erfahrungen mit solchen Standards in Teams?

PS: Die letzten Neuerungen am Blog

Ein RSS- bzw. Blog-Abonnier-Button und wie sich das gehört ein Twitter-Button für jeden Artikel. Und ab jetzt kommen auch Bilder im RSS-Feed an.
Sry an dieser Stelle für ggf. doppelt und dreifach ankommende Posts bei den bisherigen (gefühlten drei) Abonnenten ;)