Tabs vs. Spaces mit dem Index out of bounds Podcast.
Im Engineering Kiosk Adventskalender 2024 sprechen befreundete Podcaster⋅innen und wir selbst, Andy und Wolfi, jeden Tag kurz & knackig innerhalb von wenigen Minuten über ein interessantes Tech-Thema.
Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners
Das schnelle Feedback zur Episode:
Links
- Index out of bounds Podcast: https://www.ioob.de/
- Tabs or Spaces: https://alexkondov.com/indentation-warfare-tabs-vs-spaces/
Sprungmarken
Hosts
- Wolfgang Gassler (https://mastodon.social/@woolf)
- Andy Grunwald (https://andygrunwald.com/)
Feedback
- EngKiosk Community: https://engineeringkiosk.dev/join-discord
- Buy us a coffee: https://engineeringkiosk.dev/kaffee
- Email: stehtisch@engineeringkiosk.dev
- LinkedIn: https://www.linkedin.com/company/engineering-kiosk/
- Mastodon: https://podcasts.social/@engkiosk
- Bluesky: https://bsky.app/profile/engineeringkiosk.bsky.social
- Twitter: https://twitter.com/EngKiosk
Transkript
Andy Grunwald (00:00:04 - 00:00:39)
Tag 16 beim Engineering Kiosk Adventskalender. Bei meiner Weihnachtsbeleuchtung ist bereits schon eine Glühbirne kaputt gegangen. Ich schau mal eben ganz kurz, wer mir denn da helfen kann. Okay, verstanden. Dann muss ich wohl mal zu den ops Leuten. Weihnachtsbeleuchtung ist ja auch schon irgendwie sowas wie das Production Environment. Aber in der heutigen Episode geht es nicht um Hardware, sondern um Software. Mit einem Beitrag aus der Community mit Christian und Thomas vom Index out of Bounds Podcast. Viel Spaß.
Thomas Diroll (00:00:41 - 00:00:45)
Tatsächlich gar nicht. Also ich schreibe nicht alles in eine Zeile.
Christian Braun (00:00:49 - 00:00:54)
Ich habe nur einmal, mein File beginnt mit vier Spaces und dann that's it.
Thomas Diroll (00:00:56 - 00:01:15)
Das ist dann auch komisch, oder? Dass du ganz die komplette Zeile vorne einrückst. Aber egal. Was ich sagen wollte, ist, ich muss nicht einrücken, sondern das macht eigentlich mein IDI für mich, bzw. Entweder Format on save oder halt, ich drücke die Tab Taste, aber ich verwende keine Tab Zeichen. Wie machst du es?
Christian Braun (00:01:15 - 00:02:00)
Ja, also ich verwende auch meine Idee, ich rücke auch eigentlich. Ich wüsste jetzt gerade nicht, wann ich das letzte Mal manuell eingerückt habe, außer wenn ich bei GitLab oder GitHub Pages einen Konflikt manuell resolven muss und keinen Bock habe, dafür in die ID zu gehen oder wenn man mit Sprachen arbeitet, wo es dediziert notwendig ist. Aber insgesamt bin ich bei dir schon im Boot zu sagen, hey, die ist jetzt keine Frage, die mich jeden Tag beschäftigt, oder ich könnte es dir jetzt aus Stehgreif gar nicht sagen, zu 100 % Sicherheit, ob das Tabs oder Spaces sind, weil eigentlich dadurch, dass ich Xcode verwende, bin ich mir sehr sicher, dass es Basis sind. Dennoch bei dieser Diskussion Tabs vs. Basis habe ich eine starke Tendenz dem Thema Tabs hin, dass wir sagen, Tabs are inferior. Inferior heißt schlechter, ne? Sind besser.
Thomas Diroll (00:02:01 - 00:02:06)
Du hast es schon im Kopf, dass es eigentlich falsch ist, aber du musst dich selbst davon überzeugen.
Thomas Diroll (00:02:09 - 00:02:12)
Da würde ich jetzt mal. Genau, schieß doch mal los mit deinem Argument, das würde mich mal interessieren.
Christian Braun (00:02:12 - 00:03:14)
Ja, ich finde für mich eigentlich, dass das Foundation Argument, warum dem so ist, ist, weil Tabs genau dafür gemacht worden sind. Also ein Tab Zeichen ist ein Zeichen, was nur dafür da ist, um einen Sprung zum nächsten Column darzustellen und auszumachen. Ja, und dass das natürlich damit auch irgendwie, also die. Jedes Zeichen hat eine Bedeutung auf dem Keyboard irgendwie. Und die, dass der Tab Key damit ja quasi genau seine Bedeutung erfüllt. Und es ist irgendwie für mich absurd, warum man sich dazu entscheidet, lieber dann Spaces zu benutzen, die eigentlich für 100 andere Sachen verwendet werden, ziehen diese einzige Aufgabe von diesem Tabzeichen, die es in seinem Leben hat, den nehmen wir ihm weg. Und dass das natürlich auch zum Thema Accessibility potenziell zu Problemen führen kann, dass wenn ich sage, ich rücke meinen Code mit vier Spaces ein, anstatt von einem Tabzeichen, das halt dann, wenn ich meinen Code in einem Editor oder auf einer Webseite anschaue, wo ich keine id Unterstützung habe, die mir das gut vorliest, dass ich dadurch dann halt eine scheiß accessibility Experience bekomme.
Thomas Diroll (00:03:14 - 00:04:06)
Ja, also der Punkt mit Accessibility, den würde ich auf jeden Fall unterschreiben, auch an sich, das ist ein Zeichen, das halt einen gewissen Zweck hat. Warum verwendet man es dann nicht? Dafür bin ich auch immer Fan von, dass man die Dinge auch so nutzt, wie sie gedacht sind. Das ist genauso wie wenn du HTML schreibst und alle sind Diff Raps, obwohl es eigentlich semantische Elemente gibt, die einen bestimmten Zweck erfüllen. Also es ist genau das gleiche Thema, aber beides funktioniert. Du kannst auch eine Website eigentlich komplett nur mit DiVs bauen und sie wird auch dargestellt und kann wahrscheinlich auch von Screenreadern entsprechend interpretiert werden und auch von Google SEO mäßig vielleicht nicht so toll, aber ja, ich glaube aber auch, dass das Accessibility Thema bei den Tabs wahrscheinlich, dafür beschäftige ich mich zu wenig mit, wie im Pair Programmierer mit IDIs arbeiten, aber ich glaube auch, die IDIs kommen damit klar, wenn du mit Spaces einrückst. Also ich kann mir nicht vorstellen, dass du unbedingt Tabs dafür brauchst, damit du den Code entsprechend vorgelesen bekommst und gut damit arbeiten kannst.
Christian Braun (00:04:06 - 00:04:15)
Ja, ansonsten hätten die wahrscheinlich auch schon ein Problem heutzutage, weil ja jede IT standardmäßig auf Spaces setzt und nicht auf Tabs. Das stimmt natürlich, ja.
Thomas Diroll (00:04:15 - 00:04:33)
Du hast eine Sache gesagt noch zu den Tabs, und zwar ein Tab markiert ja eigentlich nur den Sprung zur nächsten Column. Und das ist, finde ich, vor und Nachteil, aber ich sage natürlich erstmal, dass es Nachteil ist, und zwar, du musst ja auf jedem System wird anders interpretiert, wo die nächste Column anfängt. Ja, es ist auf jedem System gleich.
Christian Braun (00:04:33 - 00:04:46)
Groß, das ist richtig, aber es ist natürlich auch eine gewisse Flexibilität, die ich dadurch habe, weil ich kann mich als Entwickler in dazu entscheiden zu sagen, ich möchte, dass ich riesige Einrückungen habe, weil ich ab der dritten Einrückung einfach nicht mehr weitermachen möchte.
Thomas Diroll (00:04:47 - 00:04:52)
Der Code sollte dann außerhalb des Bildschirms sein und ich kann nicht immer weiterarbeiten.
Christian Braun (00:04:52 - 00:05:30)
Oder vor allem so beim debuggen, ist es dann auch geil, wenn du so denkst, hey, hier steht überhaupt kein Code auf meinem Bildschirm, das sind einfach 17 Leerzeilen und da ist ein Bug. Ich weiß es nicht, ich kann es dir nicht sagen. Chef, scrollen sie mal nach rechts. Ja, aber theoretisch kann ich alle möglichen Sachen halt machen. Zweitausendein, dadurch, dass ich Tabs so für mich konfigurieren kann, wie ich möchte, in der Größe, für mich persönlich würde ich sagen, ist es ein Vorteil, weil standardmäßig wird es eigentlich jeder auf vier haben. Wenn ich aber sage, ich kann nicht mehr als drei oder vier Einrückungen haben, dann stelle ich die auf acht und ab der dritten oder vierten Einrückung hasse ich meinen Screen und deswegen werde ich das nicht machen. Und die Möglichkeit habe ich mit Tabs halt z.b. gar nicht.
Thomas Diroll (00:05:30 - 00:05:58)
Ja, aber ich meine, diese Sachen, dass du dich zwingst, bestimmte Patterns oder Anti Patterns nicht zu machen in Sachen Einrückung, das kannst du ja auch mit irgendwelchen Formattern und so weiter einstellen. Oder du kannst dir Ruler setzen in deinem IDE, dass dein Code dann halt an der Stelle auch aufhört und umbricht und so Zeug. Das kriegst du auch irgendwie alles anders hin. Also ich glaube weiterhin, es ist einfach irrelevant, beziehungsweise habe ich sogar noch einen weiteren Punkt, wo ich sage, vielleicht sind es doch sogar Spaces. Zusätzlich zu dem einen Punkt, nicht schon.
Thomas Diroll (00:06:01 - 00:06:36)
Ich glaube grundsätzlich, also meine Überzeugung ist, es ist irrelevant, aber wenn es tatsächlich eine Diskussion wäre, dann ständig wahrscheinlich auf trotzdem auf der von Spaces, aber auch nur aus dem Grund, dass wenn du einen Markdown File verfasst und dort Code einrücken willst, dass du es nicht mit Tab machen kannst in den meisten Fällen. Weil wenn du Markdown schreibst, ist es beispielsweise irgendwo auf einer GitHub Seite in einem Kommentarfeld und wenn du da Tab drückst, dann springst du aus dem Kommentarfeld raus oder aus dem, aus der Textbox und du bist dazu gezwungen, wirklich manuell die Leertaste zu drücken. Und zweitausendein, es gibt ja auch Sprachen.
Christian Braun (00:06:36 - 00:06:42)
Die überhaupt nur Spaces zulassen zum Einrücken. Also YAML, glaube ich, muss man mit Spaces einrücken, kann man nicht mit Tabs einrücken?
Thomas Diroll (00:06:43 - 00:06:47)
Gute Frage. Ich glaube, du kannst auch mit Tabs einrücken, aber ja, ja, also das ist.
Christian Braun (00:06:47 - 00:07:47)
Natürlich, solche Situationen gibt es immer. Ein anderer Punkt, den ich aber noch vorbringen möchte, den wahrscheinlich die meisten auch schon kennen, ist natürlich die Dateigröße. Da werden jetzt vielleicht viele lachen, aber ich habe hier mal kurz die Maß gemacht. Also wenn ich ein Projekt habe mit einer Million Zeilen Code, was jetzt, ja, ist groß, aber ist jetzt nicht komplett absurd, dass man, wenn man in der Firma arbeitet, dass man das irgendwie hat. Und das würde bedeuten, selbst bei nur einer einzigen Einrückung haben wir 3 MB, die quasi zusätzlich, zusätzlich nur für den Editor da vorhanden sind. Ja, aber nur bei einer Einrückung. In dem Moment, wo ich halt, also der Durchschnitt wird ja pro Zeile bei mehr liegen als bei einer Einrückung. Das heißt, wir können ganz leicht bei 6 MB rauskommen, die es einfach nicht bräuchte. Also es ist ja nicht darum, dass man sagt, ja scheiß drauf, es ist halt so, sondern es ist einfach so, es bräuchte die einfach nicht. Und die verbrauchen ja nicht nur auf deinem Rechner Speicher, sondern die verbrauchen im Repository Speicher, die verbrauchen auf all deinen Kollegen den Speicher. Wenn du das zusammennimmst, hat schon jemand einen neuen Rechner und dann.
Thomas Diroll (00:07:51 - 00:08:17)
In der Summe, finde ich ja, wenn du das jetzt hochrechnest auf Millionen von Repositories, die es gibt, Millionen von Servern, die das alles speichern müssen, da ist es wahrscheinlich dann tatsächlich irgendwann relevant. Aber wenn es darum geht, dass du die Codebase auf deinem Rechner hast, ist es eigentlich ebenfalls irrelevant. Und wenn du den Code shippst, dann geht der sowieso durch den Compiler oder wird minified oder sonst was oder gebundled in irgendeiner Form und dann ist es auch wieder irrelevant. Also ich glaube weiterhin, es ist irrelevant.
Christian Braun (00:08:17 - 00:09:17)
Ja, Thomas, also ich muss dir schon in der Hinsicht recht geben, natürlich, dass ich mir hier die, ich nehme mir die Position eines Tab Fetischisten ein und habe aber ja eigentlich auch in meiner Idee Spaces, was ja irgendwie natürlich unterstreicht die Tatsache, dass es vielleicht irrelevant ist. Und ich stelle mir die Frage, ob wir vielleicht in fünf Jahren haben wir Entwicklerinnen, die davon hören, dass es diese Diskussion Tabs vs. Bases gab und sie verstehen nicht mehr, warum man das diskutiert hat. Oder es ist so ein bisschen wie Assembler und Co. Und es gibt so Leute, die sagen, boah, das waren krasse Entwickler in, die haben darüber gesprochen. Und vielleicht ist diese ganze Diskussion Tabs vs. Bases auch eigentlich nur ein Sehnsuchtsort, den sich alle Entwickler innen für sich gesucht haben und wo sie einfach nur über das diskutieren können, wofür sie begeistert sind, und zwar Code, wo sie sich nicht mit auseinandersetzen müssen, mit irgendwelchen neuen Frameworks in React oder Wü mit einer neuen Version, Migrationsschwierigkeiten all diesen Problemen, sondern sie können einfach nur Entwickler innen sein, verbrauchen, verbrauen.
Thomas Diroll (00:09:17 - 00:09:26)
Ja, Entschuldigung, sag mal, schlafen sie am Arbeitsplatz oder wie? Entschuldigung, wir haben dem Kunden das unnötige Feature verkauft. Das muss bis heute Abend fertig sein. Das habe ich ihnen schon gestern gesagt.
Thomas Diroll (00:09:28 - 00:09:42)
Und wenn sie schon dabei sind, dann ersetzen sie noch alle Tabs mit Spaces im Gesamtprojekt und im Büro. Danke euch fürs Zuhören und dass wir Teil des Engineering Kiosk Adventskalenders sein dürfen.
Christian Braun (00:09:42 - 00:09:48)
Wir sind Index Out of Bounds, der Podcast, bei dem es um den Spaß am entwickeln geht.
Andy Grunwald (00:09:50 - 00:10:12)
Danke an Thomas und Christian für diesen Glaubenskrieg. Ich meine natürlich Episode. Mehr von den beiden gibt es im Index out of bounds Podcast. Link findet ihr natürlich in den Show Notes. Hört auch da mal rein. Das war's wieder von uns für heute. Wie immer gilt, empfiehlt die Episode mal zwei Freunden oder Arbeitskolleginnen weiter. Das würde uns zumindest sehr, sehr freuen. Wir hören uns bei der nächsten Episode wieder. Bis bald.