Почему рекомендуется иметь пустую строку в конце файла?
некоторые инструменты стиля кода рекомендуют это, и я помню, что видел некоторые инструменты командной строки unix, предупреждающие об отсутствии пустой строки.
каковы причины наличия дополнительной пустой строки?
7 ответов
многие старые инструменты плохо себя ведут, если последняя строка данных в текстовом файле не заканчивается новой строкой или комбинацией возврата каретки / новой строки. Они игнорируют эту строку, поскольку она заканчивается ^Z (eof).
помимо того, что это приятнее позицию курсора при перемещении в конец файла в текстовом редакторе.
с новой строки в конце файла обеспечивает простую проверку того, что файл не был усечен.
Если вы попытаетесь объединить два текстовых файла вместе, вы будете намного счастливее, если первый закончится символом новой строки.
пустая строка в конце файла появляется так, что стандартное чтение из входного потока будет знать, когда прекратить чтение, обычно возвращает EOF, чтобы указать, что вы достигли конца. Большинство языков могут обрабатывать маркер EOF. Именно по этой причине с давних времен, под DOS, маркером EOF была клавиша F6 или Ctrl-Z, для систем *nix это был Ctrl-D.
большинство, если не все, будет фактически читать вплоть до маркера EOF, так что библиотека времени выполнения функция чтения с входного сигнала будет знать, когда прекратить чтение дальше. Когда вы открываете поток для режима добавления, он будет стирать маркер EOF и писать мимо него, пока не будет явно вызвано закрытие, в которое он вставит маркер EOF в этой точке.
старые инструменты ожидали пустой строки, за которой следует маркер EOF. В настоящее время инструменты могут обрабатывать пустую строку и игнорировать ее.
аргумент также может быть сделан для более чистых различий, если вы добавляете в файл, следуя тем же рассуждениям, что и почему Python разрешает конечную запятую в списке?
также, Когда вы изменяете файл и добавляете некоторый код в конце файла - diff (по крайней мере, git diff в стандартной конигурации) покажет, что вы изменили последнюю строку, в то время как единственное, что вы на самом деле сделали - добавили символ новой строки. Таким образом, отчеты cvs становятся менее удобными.
некоторые языки определяют свой входной файл в терминах входных строк, где каждая входная строка представляет собой ряд символов, завершенных возвращением каретки. Если их грамматика определена таким образом, то последняя допустимая строка файла также должна быть завершена возвращением каретки.