Einrückung: Spaces vs. Tabulatoren...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.

Was verwendest du?

weniger als 4 Spaces
3
6%
4 Spaces
44
81%
5 Spaces
0
Keine Stimmen
6 Spaces
0
Keine Stimmen
7 Spaces
0
Keine Stimmen
8 Spaces
0
Keine Stimmen
mehr als 8 Spaces
0
Keine Stimmen
1 TAB
6
11%
2 TABs
0
Keine Stimmen
mehr als 2 TABs
1
2%
 
Abstimmungen insgesamt: 54
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 3. Juli 2008, 17:23

Gleich vorweg, ich verwende auch die üblichen 4 Spaces, statt Tabulatoren, weil es halt üblich ist...

Ich hab mir allerdings mal darüber Gedanken gemacht, was eigentlich besser ist, TABs oder Spaces?

Ich denke TABs wären eigentlich besser:
  • * Die Visuelle Einrückung mit TABs kann jeder im Editor indivisuell einstellen, dennnoch kann man den Sourcecode mit einander mischen.
    * Das mischen von Sourcecode mit Leerzeichen funktioniert nur gut, wenn jeder die selbe Anzahl verwendet.
    * Mit TABs gibt es keine unterschiedliche Anzahl der Einrückungen, anders als bei Spaces, wo die meisten 4 Stück nehmen, aber nicht wirklich alle.
    * Die TAB Taste erzeugt in den meisten Editoren per default TABs und keine Spaces ;)
    * Der Sourcecode ist ein kleines Stückchen kleiner: 4Bytes (Spaces) <-> 1Byte (TAB)
    * Ein zusätzliches oder ein fehlendes Leerzeichen ist viel schlechter zu erkennen als bei TABs, weil bei TABs der Abstand viel größer ist, bemerkt man ein falsches Einrücken sofort.
Wie kam es eigentlich dazu, das man sich auf 4 Leerzeichen "festgelegt" hat?

(Ich gehe mal davon aus, das die Umfrage einen klaren Favorit aufzeigen wird ;) )

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Donnerstag 3. Juli 2008, 18:14

4 Leerzeichen vielleicht weil's zu 8 die nächstkleinere Zweierpotenz ist und man bei 8 mit einer ``if``-Abfrage innerhalb einer Schleife, die in einem ``try``/``except``-Block steht, innerhalb einer Methode, also auch innerhalb einer Klasse, schnell an der 80-Zeichen-Grenze für Zeilen scheitert ohne das man sich vorwerfen muss übermässig tief zu verschachteln.
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Donnerstag 3. Juli 2008, 18:17

Mag ja sein, dass Tabs individueller wären, aber man kann die Leute doch nich einfach so ins Verderben laufen lassen ;)

In den wirklich brauchbaren Editoren kann man Tabs automatisch in Spaces umwandeln lassen. Richtig gute erkennen, wo denn nen Tab war und versuchen sich so zu verhalten, dass man die Vorzüge davon nutzen kann ;)

In Zeiten von Terabyte Festplatten sollten die 4 Byte doch wirklich nich viel ausmachen ;)

Letzteres ist nen guter Punkt, aber hier kann man auch wieder auf die Wahl des Editors verweisen ;)

Warum 4 Spaces? Der Code ist soweit auseinander gerückt, dass es sich wirklich visuell abhebt, aber noch so nah dran, dass es nich getrennt wahrgenommen wird. Wird übrigens nich nur im PEP8 empfohlen, sondern auch in zahlreichen anderen Büchern(anderer Sprachen).

Ein ganz klarer Punkt für Spaces sind halt, dass man sichergehn kann, dass der Code wirklich überall gleich aussieht und sich nicht ggf an den Editor Einstellungen vergreifen muss.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 3. Juli 2008, 18:23

@BlackJack: Klar, 8 Leerzeichen sind eindeutig zu viel und 4 sind IMHO auch die beste Wahl. Aber warum überhaupt Leerzeichen und keine Tabulatoren?
cofi hat geschrieben:In den wirklich brauchbaren Editoren kann man Tabs automatisch in Spaces umwandeln lassen. Richtig gute erkennen, wo denn nen Tab war und versuchen sich so zu verhalten, dass man die Vorzüge davon nutzen kann ;)
So ein Editor verwende ich natürlich auch nur... Allerdings kann man IMHO mehr Editoren so einstellen, das die TABs als vier Leerzeichen anzeigen können.

Im Grunde hätte man mit TABs also mehr Editoren die benutzbar wären.

Den Editor muß man so oder so einstellen. Ob auf "Statt TAB mache vier Leerzeichen" oder "Zeige einen TAB als vier Leerzeichen an" ist doch eigentlich egal.

cofi hat geschrieben:Warum 4 Spaces? ... Wird übrigens nich nur im PEP8 empfohlen, sondern auch in zahlreichen anderen Büchern(anderer Sprachen).
Das ist aber IMHO ein schwaches Argument. Weil es viele andere Sprachen so machen, machen wir es auch so... Dann hätte man auch gleich geschweifte Klammern statt Einrückung nehmen können ;)
cofi hat geschrieben:Ein ganz klarer Punkt für Spaces sind halt, dass man sichergehn kann, dass der Code wirklich überall gleich aussieht und sich nicht ggf an den Editor Einstellungen vergreifen muss.
Aber genau da ist doch das Problem. Es sieht nur überall gleich aus, wenn jeder die selbe Anzahl der Lehrzeichen verwendet. Bei Tabulatoren kann jeder selber Einstellen, wie es aussieht...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
OldBoy
User
Beiträge: 34
Registriert: Samstag 12. Januar 2008, 20:39

Donnerstag 3. Juli 2008, 20:10

Der Vorteil von Spaces gegenüber Tab:

es sind IMMER Spaces, egal welcher Editor, egal welches Anzeigeprogramm (type/more/less/pg ...), beim Drucken, beim Verarbeiten durch irgendwelche Analyseprogramme etc. etc.
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

Donnerstag 3. Juli 2008, 21:25

Wobei die Space-Taste schneller kaputt geht und man dann auf einem Minimalsystem mit einem einzigen total simplen Editor verloren ist, Tabs ftw :p

Nein imo sind Spaces schon sinnvoll. Vorallem aus dem zuletzt genannten Grund. Außerdem, selbst wenn Tabs vs Spaces total unerheblich wäre, sollte man auch noch beachten, dass Einheitlichkeit immer gut ist. Auch wenn's bei den meisten Editoren kein großer Aufwand ist, Tabs zu Spaces umzuwandeln bzw. andersrum.
Früher als ich noch mit PHP gescriptet habe, hab ich allerdings immer mit 2 Leerzeichen eingerückt. Find ich eigentlich auch nicht so schlecht, eigentlich sogar besser, da man bei 5 Verschachtelungen immer noch die Zeilenlänge beachten "muss". 4 Spaces sind natürlich übersichtlicher aber damals haben mir auch 2 gereicht und PHP ist sowieso schon so unübersichtlich.

btw 21:1, wer ist der tabber? :)
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Donnerstag 3. Juli 2008, 21:27

Hi Jens!
jens hat geschrieben:
cofi hat geschrieben:Ein ganz klarer Punkt für Spaces sind halt, dass man sichergehn kann, dass der Code wirklich überall gleich aussieht und sich nicht ggf an den Editor Einstellungen vergreifen muss.
Aber genau da ist doch das Problem. Es sieht nur überall gleich aus, wenn jeder die selbe Anzahl der Lehrzeichen verwendet. Bei Tabulatoren kann jeder selber Einstellen, wie es aussieht...
Wir sprechen doch von gegebenem Code? Der sieht (bei monospaced Fonts) überall gleich aus, unabhängig davon ob man selbst so einrücken würde.

Mein HP-UX Terminal auf der Arbeit gibt beispielsweise Tabs immer als (min.) 8 Spaces aus, was sehr zu Lasten der Übersichtlichkeit geht, ich aber nicht selbst einstellen kann.
Aber wie schon oben erwähnt kann man ja die Darstellung (Spaces/Tab) mit den meisten Editoren einstellen. Also kann es auch Pfadfinder geben, die die Tabs auf 2 Spaces stellen und dafür 2 Tabs verwenden. Will sagen, dass sich die Frage nach der Anzahl der Zeichen durchaus auch bei Tabs stellen kann.

Nicht zuletzt wird die Tab-Taste in einigen Anwendungen zum Wechseln des Widgets verwendet, so dass es bei der Eingabe zu Komplikationen kommen kann.

Ich denke auch, dass 4 Spaces schon aus metrischer und harmonischer Sicht nicht zu kurz und nicht zu weit sind. Und wenn doch jemand 3 oder 7 Spaces verwendet, dann ist das kein Beinbruch, da man sich ja nicht an den Zahlen orientiert, sondern an den vorigen Einrückungen.

Für mich gibt es nur eine wichtige Regel: NIEMALS MISCHEN. :-)

Grüße,
der Michel

ps. Meine Einstellung ist: interpretiere Tab als 4-Spaces. Wenn meine Eingabemarke hinter dem 4. Space steht und ich die Rück-Taste drücke, dann werden alle 4 Spaces auf einmal gelöscht. Finde ich klasse!
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Donnerstag 3. Juli 2008, 22:28

Um ehrlich zu sein ist mir das ganze ziemlich egal Hauptsache einheitlich. Also verwende ich für Python und Java 4 Spaces - so wie es die jeweiligen Konventionen verlangen. Auf der Arbeit wiederum verwende in Tabs für c#.
Ein guter Texteditor nimmt einem das nachdenken da sowieso ab. ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Freitag 4. Juli 2008, 00:08

Warum ist in der Liste 5 Spaces (hab ich noch nie gesehen) aber kein 2 Spaces (sieht man in jeder Google Lib)?
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 4. Juli 2008, 07:00

mitsuhiko hat geschrieben:Warum ist in der Liste 5 Spaces (hab ich noch nie gesehen) aber kein 2 Spaces (sieht man in jeder Google Lib)?
Ich hatte eigentlich mehr Antworten eingegeben, darunter war auch 2 Spaces, dann sagte mir phpBB beim Abschicken, das es zu viele Antworten sind. Warum man überhaupt mit dem Button "hinzufügen" zu viele Antworten generieren kann, bleibt wohl ein Geheimnis von phpBB.

Ist aber interessant das google 2 Spaces nutzt... Wo doch auch BDFL da arbeitet...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Freitag 4. Juli 2008, 08:30

Ich habe Komodo und SciTE mit autoindent auf 4 Leerzeichen eingestellt.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 4. Juli 2008, 10:55

jens hat geschrieben: Ist aber interessant das google 2 Spaces nutzt... Wo doch auch BDFL da arbeitet...
Der kam erst viel später.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
lunar

Freitag 4. Juli 2008, 14:28

jens hat geschrieben:@BlackJack: Klar, 8 Leerzeichen sind eindeutig zu viel und 4 sind IMHO auch die beste Wahl. Aber warum überhaupt Leerzeichen und keine Tabulatoren?
Nicht jedes Terminal erlaubt es, die Breite der Tabs einzustellen, vor allem aus Kompatibilitätsgründen zu alten Programmen, die sich bei der Ausgabe darauf verlassen das Tabs acht Zeichen lang sind.

Code, der Tabs nutzt, kann mitunter sehr plötzlich sehr hässlich außen, wenn man ihn ohne Pager auf einem dummen Terminal anzeigt. Und ja, es gibt noch genügend Leute, die keine IDE nutzen, und auf dem Terminal greppen, diffen oder annotaten ;)

Das Argument der Umwandlung zählt imho nicht wirklich. Ich habe nicht wirklich Lust, jedesmal eine sed-Pipe an ein diff-Kommando anzuhängen, zumal man damit auch schnell die Ausgabe durcheinander bringen kann, wenn das Diff-Kommando selbst Tabs zur Formatierung der Anzeige nutzt ;)
Im Grunde hätte man mit TABs also mehr Editoren die benutzbar wären.
Willst du mir ernsthaft erzählen, dass du notepad nutzen würdest, nur weil dir Tabs die Möglichkeit dazu geben?!

Antworte bitte ehrlich: Fällt dir ein einziger Editor ein, der die Tabtaste nicht zur Einrückung mit Leerzeichen nutzen kann, aber trotzdem wert wäre, zur Python-Programmierung benutzt zu werden?
Den Editor muß man so oder so einstellen. Ob auf "Statt TAB mache vier Leerzeichen" oder "Zeige einen TAB als vier Leerzeichen an" ist doch eigentlich egal.
Bei Terminals kann man da nichts einstellen.

Gehe ich richtig in der Annahme, dass du eine IDE nutzt und nie oder nur sehr, sehr selten auf der Konsole arbeitest? Das würde dein "Das-kann-man-alles-einstellen"-Argument erklären, dass an der Realität eines Programmierers, die die Konsole intensiv benutzt, ziemlich vorbeigeht.
cofi hat geschrieben:Warum 4 Spaces? ... Wird übrigens nich nur im PEP8 empfohlen, sondern auch in zahlreichen anderen Büchern(anderer Sprachen).
Das ist aber IMHO ein schwaches Argument.
PEP8 ist imho das stärkste Argument. Wir haben einen Styleguide, und wir sollten ihn um der EInheitlichkeit willen auch beachten. Die Absätze, die PEP8 über Einheitlichkeit verliert, solltest du dir diesbezüglich zu Gemüte führen ;)
Ein ganz klarer Punkt für Spaces sind halt, dass man sichergehn kann, dass der Code wirklich überall gleich aussieht und sich nicht ggf an den Editor Einstellungen vergreifen muss.
Aber genau da ist doch das Problem. Es sieht nur überall gleich aus, wenn jeder die selbe Anzahl der Lehrzeichen verwendet. Bei Tabulatoren kann jeder selber Einstellen, wie es aussieht...
So? Wie stellt man denn die Tab-Größe auf der Linux-Konsole um?
Zuletzt geändert von lunar am Sonntag 6. Juli 2008, 10:17, insgesamt 1-mal geändert.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Freitag 4. Juli 2008, 14:49

lunar hat geschrieben:
cofi hat geschrieben:Warum 4 Spaces? ... Wird übrigens nich nur im PEP8 empfohlen, sondern auch in zahlreichen anderen Büchern(anderer Sprachen).
Das ist aber IMHO ein schwaches Argument.
PEP8 ist imho das stärkste Argument. Wir haben einen Styleguide, und wir sollten ihn um der EInheitlichkeit willen auch beachten. Die Absätze, die PEP8 über Einheitlichkeit verliert, solltest du dir diesbezüglich zu Gemüte führen ;)
Was mich an eine Diskussion vor einiger Zeit errinert... Ich habe jemanden erzählt, dass es eben dieses PEP8 für Python gibt und jeder guter Programmierer eigentlich sich daran hält und den Code halt konsistent und ungefähr gleichaussehen lässt... Er argumentierte mit: "Niemand sagt mir wie ich zu programmieren habe" und "Warum sollte ich mich daran halten, was bringt mir das?"

Ich finde sowas traurig... Ich freue mich wenn es ein paar tolle "Regeln" gibt, die wirklich Sinn machen! Ich konnte auch nicht von Anfang an alle, aber hier im Forum hat man mich immer darauf hingewiesen und inzwischen achte ich auch darauf. Es ist wirklich angenehmer für's Auge, man erkennt sofort Unterschiede zwischen vielen Sachen! Methoden, Klassen, Instanzen, Körper von Funktionen sind klar erkennbar... Ich finde das PEP8 den klügsten Styleguide von allen Progrmamiersprachen. C#, Java und Konsorten haben ja auch sowas in der Art, aber viele von denen haben Regeln die sehr merkwürdig sind.
Benutzeravatar
Goswin
User
Beiträge: 361
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen

Freitag 4. Juli 2008, 18:26

Ich werde weiterhin nur 2 Spaces verwenden, ganz egal was die Mehrheit tut. Ich möchte einen Quellcode, den ich auf DIN-A4 Seiten ausdrucken kann, und meine Zeilen sind jetzt schon zu lang.
Antworten