Einige Tools im Codestil empfehlen dies, und ich erinnere mich, dass einige Unix-Befehlszeilentools vor fehlenden Leerzeilen warnen.
Was ist der Grund für eine zusätzliche leere Zeile?
language-agnostic
coding-style
eof
Petteri Hietavirta
quelle
quelle
\n\n
) oder neue Zeile\n
?cat
die Datei auf einer Shell und Sie werden wissen, warum. Wenn Ihre Datei die Eingabeaufforderung meiner Shell an einer anderen Stelle als der angezeigten (am Anfang der Zeile) erscheinen lässt, werde ich Sie wahrscheinlich hassen. ;)Antworten:
Viele ältere Tools verhalten sich schlecht, wenn die letzte Datenzeile in einer Textdatei nicht mit einer Kombination aus Zeilenumbruch oder Wagenrücklauf / neuer Zeile beendet wird. Sie ignorieren diese Zeile, da sie stattdessen mit ^ Z (eof) abgeschlossen wird.
quelle
\n
) am Dateiende voraus . Mehrere Texteditoren wie Vim und mehrere Compiler (insbesondere C ++ und Python) geben Warnungen aus. (Im Fall von C ++ verlangt der Standard dies ausdrücklich.)\n\n
.Wenn Sie versuchen, zwei Textdateien miteinander zu verknüpfen, sind Sie viel glücklicher, wenn die erste mit einem Zeilenumbruch endet.
quelle
Abgesehen von der Tatsache, dass es eine schönere Cursorposition ist, wenn Sie in einem Texteditor an das Ende einer Datei gehen.
Wenn Sie am Ende der Datei einen Zeilenumbruch haben, können Sie auf einfache Weise überprüfen, ob die Datei nicht abgeschnitten wurde.
quelle
Es kann auch ein Argument für sauberere Unterschiede angeführt werden, wenn Sie an die Datei anhängen und dabei die gleichen Überlegungen wie Warum sind nachgestellte Kommas in einer Liste zulässig?
Folgendes wird aus der verknüpften Ressource kopiert (und ein wenig gekürzt):
Ändern:
zu:
beinhaltet nur eine einzeilige Änderung im Diff:
Dies übertrifft das verwirrendere mehrzeilige Diff, wenn das nachfolgende Komma weggelassen wurde:
quelle
Die leere Zeile am Ende der Datei wird angezeigt, damit das Standardlesen aus dem Eingabestream weiß, wann der Lesevorgang beendet werden muss. In der Regel wird EOF zurückgegeben, um anzuzeigen, dass Sie das Ende erreicht haben. Die meisten Sprachen können mit dem EOF-Marker umgehen. Aus diesem Grund war der EOF-Marker seit jeher unter DOS F6-Taste oder Strg-Z, bei * nix-Systemen Strg-D.
Die meisten, wenn nicht alle, lesen tatsächlich bis zur EOF-Markierung, sodass die Funktion der Laufzeitbibliothek, aus Eingaben zu lesen, weiß, wann das Lesen beendet werden muss. Wenn Sie den Stream für den Append-Modus öffnen, wird der EOF-Marker gelöscht und darüber geschrieben, bis explizit ein Abschluss aufgerufen wird, in den der EOF-Marker an dieser Stelle eingefügt wird.
Ältere Werkzeuge erwarteten eine leere Linie, gefolgt von einem EOF-Marker. Heutzutage können Werkzeuge die leere Zeile verarbeiten und ignorieren.
quelle
\r\n
Stattdessen\n
ruft DOS mit einer Mischung aus ASCIIZ und ASCII $ auf. Schlimmer noch, später fügt Windows normalerweise am Anfang der meisten Textdateien eine Unicode-Byte-Ordnungsmarke (BOM) ein. Schöne "Einzigartigkeit".Auch wenn Sie die Datei ändern und am Ende der Datei Code anhängen - diff (zumindest git diff in der Standardkonfiguration) zeigt an, dass Sie die letzte Zeile geändert haben, während Sie als einziges tatsächlich ein Zeilenumbruchsymbol hinzugefügt haben. Daher werden Lebenslaufberichte weniger bequem.
quelle
Einige Sprachen definieren ihre Eingabedatei als Eingabezeilen, wobei jede Eingabezeile eine Reihe von Zeichen ist, die durch einen Wagenrücklauf abgeschlossen werden. Wenn ihre Grammatik so definiert ist, muss die letzte gültige Zeile der Datei ebenfalls durch einen Wagenrücklauf beendet werden.
quelle
Dies liegt an der Definition einer Textdatei. Wenn Sie eine neue Textdatei in einer Unix-Umgebung erstellen, ist der Inhalt dieser Datei das neue Zeilenzeichen '\ n'.
Ohne dies wird die Datei nicht wirklich als Textdatei identifiziert. Sobald wir dieser Textdatei Code hinzugefügt haben, geht es darum, diese erste neue Zeile, die eine Textdatei selbst definiert , nicht zu entfernen .
quelle