54 Stimmen

Python-Einrückung in "Leerzeilen"

Welches ist vorzuziehen ("." als Hinweis auf Leerzeichen)?

A)

def foo():
    x = 1
    y = 2
....
    if True:
        bar()

B)

def foo():
    x = 1
    y = 2

    if True:
        bar()

Meine Intuition wäre B (das ist auch das, was vim für mich tut), aber ich sehe ständig Leute, die A) benutzen. Ist es nur, weil die meisten der Editoren da draußen kaputt sind?

4voto

wm_eddie Punkte 3918

Meine Erfahrung in der Open-Source-Entwicklung ist, dass man innerhalb von Leerzeilen niemals Leerzeichen lassen sollte. Auch sollte man niemals Leerzeichen am Ende einer Zeile stehen lassen.

Das ist eine Frage der Kodier-Etikette.

3 Stimmen

@Lo'oris Die Einrückung ist für Code vorgeschrieben, nicht aber für Leerzeilen. Daher sind Leerzeichen in einer Leerzeile unnötig.

8 Stimmen

Und das ist nur ein weiterer Design-Fehler von Python. "Es ist zwingend erforderlich, dass Zeilen mit Codes aber nicht für leere Zeilen" ist einfach dumm.

5 Stimmen

@Lohoris Da muss ich widersprechen. Stellen Sie sich vor, wie ärgerlich es wäre, eine Sprache zu debuggen, bei der eine leere Zeile ein völlig anderes Verhalten verursacht. Ohne einen fortgeschrittenen Editor wäre es unmöglich, das überhaupt zu sehen.

3voto

Deniz Dogan Punkte 24823

Ich würde das erste Beispiel nicht unbedingt als "kaputt" bezeichnen, denn ich weiß, dass einige Leute es hassen, wenn der Cursor "zurückspringt", wenn sie ihn im Code nach oben oder unten bewegen. Visual Studio (zumindest 2008) verhindert dies z. B. automatisch, ohne dass in diesen Zeilen Leerzeichen verwendet werden.

3voto

wjandrea Punkte 21948

B wird bevorzugt, d. h. keine Einrückung. PEP 8 sagt :

Vermeiden Sie Leerzeichen am Ende des Textes. Da es normalerweise unsichtbar ist, kann es verwirrend sein: z.B. zählt ein Backslash gefolgt von einem Leerzeichen und einem Zeilenumbruch nicht als Zeilenfortsetzungsmarkierung. Einige Editoren behalten sie nicht bei und viele Projekte (wie CPython selbst) haben Pre-Commit-Hooks, die sie zurückweisen.

1voto

Skilldrick Punkte 66961

Emacs macht B) für mich, aber ich glaube nicht, dass es darauf ankommt. A) bedeutet, dass Sie eine Zeile mit der richtigen Einrückung ohne Tabulator einfügen können.

1voto

Score_Under Punkte 1101

vi entmutigt implizit das Verhalten in A, weil die { / } Die Navigationen funktionieren nicht mehr wie erwartet. git ausdrücklich davon ab, indem es beim Ausführen von git diff . Ich würde auch argumentieren, dass eine Zeile, die Leerzeichen enthält, keine Leerzeile ist.

Aus diesem Grund bevorzuge ich B. Es gibt nichts Schlimmeres, als zu erwarten, dass man sechs oder mehr Zeilen mit dem { Bewegung und das Erreichen der Spitze einer Klasse def.

2 Stimmen

Git macht den Whitespace Diff lediglich sichtbar, indem es ihn hervorhebt. Unterdrücken mit git diff -b o git diff -w

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X