Может быть, стоило написать в «Я негодую». Не знаю. Пока писал, расколотил чашку с чаем и таким образом достиг хладнокровия.
Я про вот что: раз и два.
Есть же множество прекрасных тем для холиваров: Windows или Linux, IE или FF, Canon и Nikon, Intel и AMD, «на Украине» или «в Украине». Чужой или Хищник, наконец!
Так нет же, зацепились на ровном месте: пробелы и табуляции.
Не буду делать вид, что проблемы не существует. Проблема еще какая. Если в коде использованы не те символы, рвется индентация, странным образом скачет курсор, появляются развесистые глупые диффы и увеличивается систолический объем сердца. Что-то надо делать.
Я не про конфликты слияния (хотя они тоже есть), а про конфликты между сотрудниками.
Ладно бы только табуляции. Есть, скажем, такой спецэффект в vim'е: если между двумя строками с отступом затесалась одна совсем пустая строка (то есть в файле на ее месте два
И ты теперь жалуешься мне, что я закоммитил пустые строки. Настолько пустые, что даже без пробелов. Тебе это жмёт, а виноват я.
Когда я писал в vim, это было моей проблемой. Кажется, она даже как-то решалась.
Теперь в vim пишешь ты (а я в Komodo Edit), но почему-то это осталось моей проблемой. Почему? Потому что vim православнее? Вот не надо. В конце концов, я старше и у меня ноги грязнее. У нас субординация и выслуга лет.
Давай не будем друг друга в чем-то убеждать. У тебя свои пробелы, у меня свои. Не станем их навязывать. Каждый остается при своем, а чтобы оставаться было удобней, умные люди придумали обрабатывающие скрипты (hooks) на события в системах контроля версий.
Sapienti sat.
Вы, в конце концов, программисты или где? Что за нытье? Не вы ли разбирали в трудах классиков волшебную формулу — как посчитать число табуляций по позиции в строке?
Так, теперь при собеседовании на работу будет обязательное задание — написать фильтр, превращающий любой текстовый файл в излюбленную кандидатом комбинацию пробельных символов для отступов. Не справился за 20 минут? Вон из профессии.
А диффы, кстати, испокон веков могли показываться без учета whitespace. А сейчас диффы вообще умные, скоро захватят человечество.
Ну, допустим, с отступами разобрались, а вот есть еще выравнивание. И отбивки. И линейки. Не считая более важных штук, таких как египетские фигурные скобки, пробелы вокруг аргументов и сакральное ИменованиеФункций и переменных_разной_области_видимости.
Вообще, у нас где-то валялся стайл-гайд. Мы три страницы скопипастили и своих два абзаца добавили; потом задолбались и то, что получилось, запихали в корпоративную вики. Тычем туда носом новичков. Когда сам заглядывал? Ну… в прошлом году, кажется, смотрел. Да, в прошлом году, точно. В январе. Там хорошо написано о том, как важны комментарии и когда применять в идентификаторах num, а когда count.
Да, стайл-гайд соблюдать полезно. Но иногда лениво.
Так в чем проблема? Быстренько гуглим: %твой_любимый язык% tidy. Скачиваем, ставим, прогоняем код через него и радуемся жизни.
Что-о-о? Для %твой_любимый язык% ничего нет? И ты еще спрашиваешь, чем таким гениальным осчастливить open source сообщество в свободный вечер?
Бери и пиши. За пример можешь взять perltidy, он, пожалуй, самый мощный. В нем стопиццот ручек и кнопок; я уверен, даже автор их все не знает. А с выравниванием, которое alignment, как он управляется — это просто волшебство какое-то.
Решаем у себя раз и навсегда. Решаем, например, так:
Второе. Ответственным за соблюдение порядка в репозитории назначается системный администратор Пупкин В.А. Если в репозитории появились файлы, не соответствующие указанным правилам, наказан будет только он, а не коммитер. Пусть Пупкин сегодня же настроит обрабатывающие хуки. Если достигнуто общее мнение насчет стиля, помимо приведенных простых правил код будет прогоняться через xxxtidy с такими-то опциями для приведения файлов в соответствие с корпоративным стилем оформления программного кода.
Третье. Никакие жалобы вида «я привык так», «мне надо вот этак», «у меня редактор NoteWordMega+++ не понимает ваших табов», «этот его долбанный NoteWordMega+++ понапихал в код свистелок и перделок» отныне и навеки веков не принимаются. Жалобщик будет наказан тремя днями рефакторинга кода, написанного на Whitespace и распечатанного на туалетной бумаге. После чего садится настраивать хуки на своей стороне. Теперь совсем всё.
Незамедлительно по офису распространяется благодать и цвет лица разработчиков улучшается на 18%.
Если вдруг я приду к вам на работу, или вы придете ко мне на работу, и попробуете что-то предъявить насчет пробелов и табуляций — я порву на себе майку, заору страшным голосом и откушу вам голову. Ну ладно, ладно, я забьюсь в угол, заплачу и буду звать маму.
Договорились?
1. Поскольку животное в начале топика, взятое мною на Flickr, было лицензировано под CC BY-SA, указываю автора фотографии: Johnathan Nightingale.
2. Что-то я никак не могу нагуглить инструкцию по применению num и count в идентификаторах, а вопрос, действительно, интереснейший. И с точки зрения английского языка, и для целей наведения тотального порядка. Помню, была очень хорошая статья, если кто найдет, дайте ссылку, пожалуйста.
3. В первой версии поста количество матюков достигало трех штук на предложение. Скрепя сердце, матюки повыбрасывал. А то программист нынче пошел нежный, от табуляций и пробелов бледнеет и чахнет, куда ему крепкую лексику. Тут смайл.
Я про вот что: раз и два.
Есть же множество прекрасных тем для холиваров: Windows или Linux, IE или FF, Canon и Nikon, Intel и AMD, «на Украине» или «в Украине». Чужой или Хищник, наконец!
Так нет же, зацепились на ровном месте: пробелы и табуляции.
Не буду делать вид, что проблемы не существует. Проблема еще какая. Если в коде использованы не те символы, рвется индентация, странным образом скачет курсор, появляются развесистые глупые диффы и увеличивается систолический объем сердца. Что-то надо делать.
Конфликты
Я не про конфликты слияния (хотя они тоже есть), а про конфликты между сотрудниками.
Ладно бы только табуляции. Есть, скажем, такой спецэффект в vim'е: если между двумя строками с отступом затесалась одна совсем пустая строка (то есть в файле на ее месте два
\n
подряд), то vim не сохранял позицию курсора при перемещении вниз-вверх.И ты теперь жалуешься мне, что я закоммитил пустые строки. Настолько пустые, что даже без пробелов. Тебе это жмёт, а виноват я.
Когда я писал в vim, это было моей проблемой. Кажется, она даже как-то решалась.
Теперь в vim пишешь ты (а я в Komodo Edit), но почему-то это осталось моей проблемой. Почему? Потому что vim православнее? Вот не надо. В конце концов, я старше и у меня ноги грязнее. У нас субординация и выслуга лет.
Куды бечь?
Давай не будем друг друга в чем-то убеждать. У тебя свои пробелы, у меня свои. Не станем их навязывать. Каждый остается при своем, а чтобы оставаться было удобней, умные люди придумали обрабатывающие скрипты (hooks) на события в системах контроля версий.
Sapienti sat.
Вы, в конце концов, программисты или где? Что за нытье? Не вы ли разбирали в трудах классиков волшебную формулу — как посчитать число табуляций по позиции в строке?
Так, теперь при собеседовании на работу будет обязательное задание — написать фильтр, превращающий любой текстовый файл в излюбленную кандидатом комбинацию пробельных символов для отступов. Не справился за 20 минут? Вон из профессии.
А диффы, кстати, испокон веков могли показываться без учета whitespace. А сейчас диффы вообще умные, скоро захватят человечество.
Что дальше?
Ну, допустим, с отступами разобрались, а вот есть еще выравнивание. И отбивки. И линейки. Не считая более важных штук, таких как египетские фигурные скобки, пробелы вокруг аргументов и сакральное ИменованиеФункций и переменных_разной_области_видимости.
Вообще, у нас где-то валялся стайл-гайд. Мы три страницы скопипастили и своих два абзаца добавили; потом задолбались и то, что получилось, запихали в корпоративную вики. Тычем туда носом новичков. Когда сам заглядывал? Ну… в прошлом году, кажется, смотрел. Да, в прошлом году, точно. В январе. Там хорошо написано о том, как важны комментарии и когда применять в идентификаторах num, а когда count.
Да, стайл-гайд соблюдать полезно. Но иногда лениво.
Так в чем проблема? Быстренько гуглим: %твой_любимый язык% tidy. Скачиваем, ставим, прогоняем код через него и радуемся жизни.
Что-о-о? Для %твой_любимый язык% ничего нет? И ты еще спрашиваешь, чем таким гениальным осчастливить open source сообщество в свободный вечер?
Бери и пиши. За пример можешь взять perltidy, он, пожалуй, самый мощный. В нем стопиццот ручек и кнопок; я уверен, даже автор их все не знает. А с выравниванием, которое alignment, как он управляется — это просто волшебство какое-то.
Ответ на главный вопрос
Решаем у себя раз и навсегда. Решаем, например, так:
- код в репозитории хранится с отступами, кратными 4 пробелам
- каждые 8 пробелов обязательно заменяются символом табуляции ASCII 0x09
- новая строка определяется символом ASCII 0x0A (LF)
- между несколькими символами LF никаких других пробельных символов не допускается
- завершающих пробельных символов в строках быть не должно
- файл обязательно завершается одним и только одним LF
Второе. Ответственным за соблюдение порядка в репозитории назначается системный администратор Пупкин В.А. Если в репозитории появились файлы, не соответствующие указанным правилам, наказан будет только он, а не коммитер. Пусть Пупкин сегодня же настроит обрабатывающие хуки. Если достигнуто общее мнение насчет стиля, помимо приведенных простых правил код будет прогоняться через xxxtidy с такими-то опциями для приведения файлов в соответствие с корпоративным стилем оформления программного кода.
Третье. Никакие жалобы вида «я привык так», «мне надо вот этак», «у меня редактор NoteWordMega+++ не понимает ваших табов», «этот его долбанный NoteWordMega+++ понапихал в код свистелок и перделок» отныне и навеки веков не принимаются. Жалобщик будет наказан тремя днями рефакторинга кода, написанного на Whitespace и распечатанного на туалетной бумаге. После чего садится настраивать хуки на своей стороне. Теперь совсем всё.
Незамедлительно по офису распространяется благодать и цвет лица разработчиков улучшается на 18%.
Официально заявляю
Если вдруг я приду к вам на работу, или вы придете ко мне на работу, и попробуете что-то предъявить насчет пробелов и табуляций — я порву на себе майку, заору страшным голосом и откушу вам голову. Ну ладно, ладно, я забьюсь в угол, заплачу и буду звать маму.
Договорились?
1. Поскольку животное в начале топика, взятое мною на Flickr, было лицензировано под CC BY-SA, указываю автора фотографии: Johnathan Nightingale.
2. Что-то я никак не могу нагуглить инструкцию по применению num и count в идентификаторах, а вопрос, действительно, интереснейший. И с точки зрения английского языка, и для целей наведения тотального порядка. Помню, была очень хорошая статья, если кто найдет, дайте ссылку, пожалуйста.
3. В первой версии поста количество матюков достигало трех штук на предложение. Скрепя сердце, матюки повыбрасывал. А то программист нынче пошел нежный, от табуляций и пробелов бледнеет и чахнет, куда ему крепкую лексику. Тут смайл.