Niektóre narzędzia w stylu kodu to zalecają i pamiętam, że widziałem niektóre narzędzia wiersza poleceń unix ostrzegające o brakującej pustej linii.
Jaki jest powód posiadania dodatkowej pustej linii?
language-agnostic
coding-style
eof
Petteri Hietavirta
źródło
źródło
\n\n
) czy nową linię\n
?cat
plik w powłoce, a dowiesz się, dlaczego. Jeśli twój plik powoduje, że monit mojej powłoki pojawia się w innym miejscu niż to, w którym powinien być (na początku linii), prawdopodobnie cię nienawidzę. ;)Odpowiedzi:
Wiele starszych narzędzi źle funkcjonuje, jeśli ostatni wiersz danych w pliku tekstowym nie jest zakończony kombinacją znaku nowej linii lub znaku powrotu karetki / nowej linii. Ignorują tę linię, ponieważ zamiast niej jest zakończona ^ Z (eof).
źródło
\n
) na końcu pliku. Kilka edytorów tekstu, takich jak Vim i kilka kompilatorów (w szczególności C ++ i Python) będzie wyświetlać ostrzeżenia. (W przypadku C ++ standard wyraźnie tego wymaga.)\n\n
.Jeśli spróbujesz połączyć dwa pliki tekstowe razem, będziesz o wiele szczęśliwszy, jeśli pierwszy zakończy się znakiem nowej linii.
źródło
Oprócz tego, że jest to ładniejsza pozycja kursora, gdy przechodzisz na koniec pliku w edytorze tekstu.
Posiadanie nowego wiersza na końcu pliku zapewnia proste sprawdzenie, czy plik nie został obcięty.
źródło
Można również argumentować za czystszymi różnicami, jeśli dodasz do pliku zgodnie z takim samym uzasadnieniem, jak Dlaczego przecinki końcowe są dozwolone na liście?
Poniższe elementy są kopiowane (i nieco przycinane) z połączonego zasobu:
Wymiana pieniędzy:
do:
dotyczy tylko zmiany jednowierszowej w różnicach:
To pokonuje bardziej mylącą różnicę między wierszami, gdy pominięto przecinek końcowy:
źródło
Pojawia się pusta linia na końcu pliku, aby standardowy odczyt ze strumienia wejściowego wiedział, kiedy zakończyć odczyt, zwykle zwraca EOF, wskazując, że osiągnąłeś koniec. Większość języków obsługuje znacznik EOF. Jest tam z tego powodu od dawna, pod DOS, znacznikiem EOF był klawisz F6 lub Ctrl-Z, dla systemów * nix był to Ctrl-D.
Większość, jeśli nie wszystkie, w rzeczywistości odczytuje aż do znacznika EOF, tak że funkcja odczytu ze źródła w bibliotece wykonawczej będzie wiedziała, kiedy przestać czytać dalej. Gdy otworzysz strumień w trybie Append, wyczyści on znacznik EOF i napisze obok niego, aż zostanie jawnie wywołane zamknięcie, w którym wstawi znacznik EOF w tym punkcie.
Starsze narzędzia oczekiwały pustej linii, a po niej znacznika EOF. W dzisiejszych czasach narzędzia mogą obsługiwać pustą linię i ignorować ją.
źródło
\r\n
zamiast\n
wywołań DOS przy użyciu kombinacji ASCIIZ i ASCII $. Co gorsza, później w systemie Windows zwykle wstawia znak kolejności bajtów Unicode (BOM) na początku większości plików tekstowych. Cudowna „wyjątkowość”.Również gdy zmodyfikujesz plik i dodasz kod na końcu pliku - diff (przynajmniej git diff w standardowej konfiguracji) pokaże, że zmieniłeś ostatnią linię, a jedyną rzeczą, którą faktycznie zrobiłeś - dodał symbol nowej linii. Tak więc raporty cvs stają się mniej wygodne.
źródło
Niektóre języki definiują swój plik wejściowy za pomocą linii wejściowych, gdzie każda linia wejściowa jest ciągiem znaków zakończonych znakiem powrotu karetki. Jeśli ich gramatyka jest tak zdefiniowana, ostatnia poprawna linia pliku musi być zakończona również znakiem powrotu karetki.
źródło
Wynika to z definicji pliku tekstowego. Kiedy tworzysz nowy plik tekstowy w dowolnym środowisku unixowym, zawartością tego pliku jest nowy znak wiersza „\ n”
Bez tego plik nie jest tak naprawdę identyfikowany jako plik tekstowy. Teraz, gdy dodamy kod do tego pliku tekstowego, chodzi o to, aby nie usuwać początkowej nowej linii, która definiuje sam plik tekstowy .
źródło