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