Я думаю, что они пытаются обеспечить завершение каждого файла завершающим символом новой строки.Это отличается от окончания пустой строкой, то есть пустой новой строки.
Редактировать: как @Easy Angel кратко поясняется в комментариях: завершающий символ новой строки = "\ n" и пустая строка = "\ n \n "
Я думаю, что либо:
ваш запрос либо обязывает каждый файл заканчиваться символом новой строки, но его неверно истолковывают как обязательный каждый файлзаканчиваются пустой строкой (т. е. пустой строкой, заканчивающейся символом новой строки), или же
они пытаются обеспечить завершение каждого файла символом новой строки, фактически присвоив каждому файлу конец спустая строка (то есть пустая строка, которая заканчивается новой строкой), таким образом, файлы заканчиваются хотя бы одной новой строкой (и, возможно, избыточной дополнительной новой строкой - overkill?).
Если редактор фактически непоказывает символы новой строки, в некоторых редакторах не всегда ясно, что файл:
- НЕ ЗАВЕРШАЕТ символ новой строки,
- ENDS с одним последним newline, или
- ENDS с пустым символом новой строки, то есть с двумя завершающими символами новой строки
Я думаю, что большинство современных редакторов исходного кода вставляют конечный символ новой строки.Однако при использовании более старых более общих редакторов я всегда старался бы, чтобы мои файлы исходного кода (и текстовые файлы в целом) всегда заканчивались завершающей новой строкой (которая иногда получалась как пустая строка / пустая новая строка в зависимости отредактор, который я использовал), потому что:
при использовании cat
для отображения файла в командной строке, если в файле отсутствует завершающий символ новой строки, следующий вывод (например, приглашение оболочки илиВизуальный разделитель, который скрипт может выводить между файлами), в конечном итоге будет отображаться сразу после последнего символа, не являющегося переводом новой строки, а не начинаться с новой строки.В целом, завершающий перевод новой строки делает файлы более удобными для пользователя и работы со сценариями.
Я полагаю, что некоторые редакторы (я не могу вспомнить какие-либо подробности) автоматически вставят завершающий перевод новой строки, если текстфайл не хватало одного.Это заставило бы это казаться, что файл был изменен.Это может сбить с толку, если у вас есть несколько файлов, открытых в разных окнах, а затем закрыть все из них - редактор предложит вам сохранить, но вы не уверены, сделали ли вы «настоящие изменения» в файле или это просто автовставлен перевод строки.
Некоторые инструменты, такие как diff
и некоторые компиляторы, будут жаловаться на отсутствующий завершающий перевод строки.С этим шумом могут столкнуться пользователи и инструменты.
Редактировать:
О программередакторы, добавляющие новые строки и не имеющие возможности увидеть, есть ли новая строка против пустой новой строки в конце файла, я только что протестировал Vim, Eclipse и Emacs (в моей системе Windows с Cygwin): я открыл новый файл, набрав 'h'' e '' l '' l '' o 'и сохранены без нажатия [ENTER].Я проверил каждый файл с помощью od -c -t x1
.
- Vim сделал добавить завершающий перевод новой строки.
- Emacs сделал добавить завершающий перевод новой строки.
- Затмение НЕ добавило завершающий символ новой строки.
Но
- Vim НЕ позволил мне перейти к пустой строке под словом "привет".
- Emacs сделал позволил мне навести курсор на пустую строку под "привет".
- Eclipse не сделал позволил мне навести курсор на пустую строку под "привет".
Интерпретируйте, как вам нравится.
Моя личная практика - стараться, чтобы текстовые файлы заканчивались завершающим символом новой строки.Я просто чувствую, что наименьший сюрприз для людей и инструментов с этим дело.Я бы не стал рассматривать исходные файлы в этом отношении иначе, чем текстовые файлы.
Google обнаружил this :
, которые на момент этого редактирования отображают хиты, в которых говорится о предупреждениях о пропущенном завершающем переводе строки, поступающем от компиляторов C, svn (из-за diff), diff и т. Д. Мне кажется, существует общее ожидание, что текстовые файлы (включая исходные файлы)) заканчиваются завершающим символом новой строки и наименее удивительными (и менее шумными), когда они, как правило, находятся там.
Наконец этот интересен:
Санация файлов без завершающего символа новой строки
Текстовые файлы должны иметь все строки, оканчивающиеся символами новой строки (например, \ n).Это утверждается POSIX, который говорит, что текстовый файл
Файл, содержащий символы, организованные в ноль или более строк.
Строка, в свою очередь, определяется как
* Последовательностьноль или более не-символов плюс завершающий символ.
ОДНАКО , все это говорит о том, что это всего лишь моя личная практика.Я рад поделиться своим мнением со всеми, кто спрашивает, но я никому не навязываю это.Я не чувствую, что это стоит того, чтобы поручить, как я говорю здесь :
Хотя я один из тех, кто все за последовательность, я также против микроуправления каждым битомстиль.Наличие огромного списка соглашений о кодировании, особенно когда некоторые из них кажутся произвольными, является частью того, что отговаривает людей следовать им.Я думаю, что руководящие принципы кодирования должны быть направлены на наиболее ценные практики, которые улучшают способности.Насколько удобочитаемость, удобство обслуживания, производительность и т. Д. Улучшены благодаря применению этой практики?