предпочитаете окончание строки окон или unix для кода?

Я пишу код, который должен скомпилироваться и работать как в Windows, так и в Unix, например Linux. Я знаю о разнице между окончаниями строк, но вопрос в том, что предпочесть для моего кода? Это имеет значение? Я хочу, чтобы он был последовательным - скажем, весь мой код использует только LF или лучше только CRLF? Существуют ли критерии для сравнения?

Если это имеет значение, в основном я забочусь о кодах C++ и Python


person zaharpopov    schedule 13.09.2010    source источник
comment
Если вы работаете с существующим кодом, используйте то, что он использует, - не пытайтесь его переделать :) Если нет, посмотрите ответы других людей.   -  person Merlyn Morgan-Graham    schedule 13.09.2010


Ответы (3)


Используйте систему управления версиями, которая достаточно умна, чтобы игнорировать окончания строк при возврате и использовать правильное значение для платформы при извлечении.

person Ben Voigt    schedule 13.09.2010
comment
+1. svn propset svn:eol-style native <file> (или эквивалентная команда git), а ваше программное обеспечение для контроля версий устанавливает концы строк в соответствии с ожиданиями вашей текущей платформы. - person DevSolar; 13.09.2010
comment
что вы подразумеваете под игнорированием при регистрации? Что именно хранится в репозитории? - person zaharpopov; 13.09.2010
comment
@zaharpopov это не имеет большого значения. Дело в том, что когда вы извлекаете рабочую копию, ваши файлы получают правильные окончания строк. - person Antonio Pérez; 13.09.2010
comment
Под игнорированием я подразумеваю, что инструмент регистрации не считает файл измененным, если единственное различие заключается в окончаниях строк, и, следовательно, не создает новую версию (конечно, это относится только к текстовым файлам, если вы пометите файл файл как двоичный, тогда учитывается каждое различие). Большинство инструментов делают это, нормализуя все окончания строк, возможно, до unix '\n', но есть также инструменты сравнения, которые могут игнорировать различия '\r', а также другие изменения пробелов. - person Ben Voigt; 13.09.2010

Для самого кода это не имеет значения. Все достаточно современные редакторы и компиляторы одинаково хорошо справляются с обоими (я полагаю, вы не используете блокнот :-)). Просто используйте окончание строки основной платформы разработки.

person Andrew Stein    schedule 13.09.2010
comment
не блокнот, но многие редакторы в Linux показывают CR как ^M, что раздражает - person zaharpopov; 13.09.2010
comment
большинство редакторов показывают ‹kbd›^M‹/kbd› только в том случае, если в одном и том же файле имеется смесь окончаний строк. - person Ben Voigt; 13.09.2010
comment
Xcode — один из основных редакторов, который ведет себя неправильно при редактировании исходных файлов с окончаниями строки CRLF. - person justin; 13.09.2010

IME проще всего использовать окончания строк *NIX. Компиляторы Windows и IDE прекрасно справляются с этим, и он нативен для инструментов *NIX. Использование окончаний строк DOS создает если не проблемы, то неудобства при работе с некоторыми (даже наиболее популярными) текстовыми редакторами на *NIX. Вы часто получаете уродливые '^M' в конце строки, и вам приходится явно преобразовывать или сообщать вашему редактору, что у него есть окончания строки DOS.

person wilx    schedule 13.09.2010