Здравствуйте, Sinclair, Вы писали:
S>·>А что ты ему скажешь если ты ему посылаешь xml набранный с четырмя пробелами на 26", а на его 10" планшетике он занимает в ширину в три экрана? S>Я тем временем смеюсь с темы разговора. Вы вообще пробовали код в Скайпе отправлять? В контексте замены комментариев смайликами всерьёз рассуждать о важности табов или пробелов может только шизофреник.
Добавь в начало сообщения то что в кавычках "!! ", потом код — там и смайлки не подставляются, и шрифт моноширинный.
S>На всякий случай напомню, что в скайпе вообще нельзя сделать ширину разговора больше захардкоженной производителем.
Ширина разговора меняется мышкой, за край области "Type a message here".
S>ЛЮБОЙ код превращается в скайпе в нечитаемое месиво.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Добавь в начало сообщения то что в кавычках "!! ", потом код — там и смайлки не подставляются, и шрифт моноширинный.
Причём, табы по прежнему отображаются одним пробелом (тестовый гист).
Здравствуйте, Sinclair, Вы писали:
S>Он не нравится лично мне тем, что переход между "короткий список аргументов" и "длинный список аргументов" слишком резкий.
Закрывающую скобку не обязательно переносить на новую строку.
someNiceFunction(aaa); // так?
someNiceFunction( // или так?
aaa);
Здравствуйте, ·, Вы писали:
N>>>>Какой отступ на продолжения многострочного оператора? 0, 1, 2 таба? Я видел все эти варианты. N>>·>Ты с темы не слезай. N>>Это я, оказывается, слезаю с темы? ·>Ты хочешь сказать, что я слезаю? В каком месте?
То есть ты отвечаешь, не прочитав всё письмо.
N>>·> Ты расскажи вначале решение этой проблемы в вселенной с пробелами. N>>Во-первых, не указывай другим, что делать, и они не скажут, куда тебе пойти. N>>Я потому и не хочу зацикливаться на одном твоём вопросе ·>Я решаю один вопрос, а ты вносишь другие. Притом они вообще никак не связаны с изначальным. Как делать _отступы_ (не выравнивание!) в многострочных выражениях от табов/пробелов никак не зависит.
Именно что напрямую зависит, потому что эти отступы делаются по многим канонам именно табами, и твоё свободное варьирование их ширины сломает форматирование.
N>>Во-вторых, если уж ты хочешь в первую очередь прямого ответа на это — я просто не считаю, что это проблема. В моих краях это обычно решается тем, что нажатие Tab вставляет нужное количество пробелов, ·>Ты мне точно скажи какое количество пробелов нужное? И объясни почему все не используют именно это количество.
Согласно канону. Который в каждом месте может быть свой.
Точно так же и с табами. Почему ты считаешь, что обычный отступ вложенности — один таб? Я встречал традицию, где это — два таба.
А один используется под полуотступ для некоторых особых случаев.
Так что твоё представление, что один таб это универсальный закон программного бытия, как минимум поспешно.
N>>а нажатие BS на пустом месте его съедает, и этого достаточно, чтобы поддерживать согласованный вариант. Я просто не вижу глубокого смысла в желании иметь какой-то плавный ползунок, которым регулировать эти отступы, расширяя и сжимая текст; но если кому-то это нужно — это реализуется и на пробелах. Да, пожалуй, ещё нельзя сказать "элементарно реализуется" — проблема в продолжениях операторов. ·>Не реализуется это на пробелах. Как мне такое реализовать на пробелах, если в окне редактора я хочу видеть четыре пробела, т.к. удобнее читать, а в окне мержа с тремя столбиками мне нужно 1 или два пробела, т.к. иначе в ширину экрана не помещается?
А если у тебя и с 1 пробелом на таб не поместится? У меня именно так, потому что я предпочитаю крупные шрифты, а писать вообще в 25x80.
Какой-то у тебя ну очень частный случай для оправдания.
N>>И вот тут как раз видно, что это ты "слезаеш с темы" — ты, а не я. N>>Потому что мои примеры ты поскипал и не ответил. А между тем примеры 5 и 6 ·>(5) и (6) вообще страх какой-то. Я думал ты по приколу их предложил.
Не-а, полностью серьёзно.
·>ни кстати разъедутся и при простом переименовании функции например.
Переименование обычно включает в себя и изменение роли, аргументов, etc?
·> Если тебе и правда интересно моё мнение, то я предпочту (2) или может быть (3), а (1) может сгодиться если первый параметр функции какой-то особый.
Мне оно интересно, но исключительно в контексте данного обсуждения
OK, понятно.
N>>как раз на тему того, как испортится выравнивание при табуляциях, меняющих длину. ·>Опять двадцать пять. Не надо путать выравниваение (alignment) и отступ (indent).
Так если и то, и другое делают табами в тех стандартах, где применяются табы, то зачем мне их различать?
Это если ты утверждаешь, что indentation делаешь табами, а alignment пробелами, то твой подход заметно другой, чем стандартный.
См. я приводил пример с отступами табами для полей структуры. Вот там у тебя вообще всё съедет к лешим.
N>>·>Я не утверждал, что табы решают все проблемы, рак, думаю, они не вылечат. Они решают проблему размера отступов. N>>Ещё и ёрничаешь на ровном месте. ·>Не люблю тупую софистику.
Тогда зачем сам её применяешь, причём первым?
N>>·>Так себе поддерживают, ибо задача не имеет простого алгоритмического решения. Никогда не попадались файлы с разным количеством пробелов в отступе в разных строках? N>>В смысле — часть табами, часть пробелами? Попадались. И что? ·>Нет, часть двумя пробелами, часть четырьмя, а местами случайно вставлено три.
Ну так будет точно так же неровное количество табов. Тому, кто так делает, пофиг на выравнивание при любом подходе.
(Собственно, я сам такой, когда ну очень спешно что-то делаю... хотя я такое не коммичу)
N>>Там, где отступы принципиально важны для интерпретации (как в Python или Makefile), это вызывает просто ошибку компиляции. Там, где не важны (C с компанией), там нет проблем для машины; а для человека — один лишний раз дочистить. N>>Выдержка единого средства (табы или пробелы) тут важнее, чем выбор между ними; но при выборе уже между ними я предпочту пробелы из-за заведомо меньшей конфликтности для таких ситуаций. ·>Так с пробелами возникнет конфликт с их количеством. Поэтому я выбираю табы.
И там тот же конфликт. А рекомендованное количество пробелов обычно соответствует духу языка, насколько его можно сформулировать
N>>И тут же — я участвовал в разработке софтин, в стиле которых было принято tabstop=8, но shiftwidth=4. Отступ кратный 8 делался только табами, а кратный 4, но не 8 — табы плюс 4 пробела. Между прочим, такой стиль ну очень распространён. И ты его своими "плавными" регулированиями сломаешь на корню ·>Жуть конечно. Но если ставить ширину таба больше 4, то проблем не будет.
Так это ж нетипичный вариант. Типичные — 8, 4, 3, 2 — и из них под твоё условие подходит только 8.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, ·, Вы писали: S>·>А что ты ему скажешь если ты ему посылаешь xml набранный с четырмя пробелами на 26", а на его 10" планшетике он занимает в ширину в три экрана? S>Я тем временем смеюсь с темы разговора. Вы вообще пробовали код в Скайпе отправлять? В контексте замены комментариев смайликами всерьёз рассуждать о важности табов или пробелов может только шизофреник.
Это выключается в настройках.
S>На всякий случай напомню, что в скайпе вообще нельзя сделать ширину разговора больше захардкоженной производителем. ЛЮБОЙ код превращается в скайпе в нечитаемое месиво.
Из линуксового скайпа, по крайней мере, код копируется так, что после каждой строки кода появляется дополнительная пустая строка.
Вот этот эффект более выдающийся, чем табы
Здравствуйте, Qbit86, Вы писали:
Q>·>А что ты ему скажешь если ты ему посылаешь xml набранный с четырмя пробелами на 26", а на его 10" планшетике он занимает в ширину в три экрана? Q>Это хотя бы предсказуемо и надёжно. Не то что настраивать CSS-стили в мобильном браузере на планшете, чтобы у тебя восьмизнаковый таб не превращал ширину документа в шесть экранов.
А восьмипробельный отступ не превращает?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, netch80, Вы писали:
N>>>Во-первых, не указывай другим, что делать, и они не скажут, куда тебе пойти. N>>>Я потому и не хочу зацикливаться на одном твоём вопросе N>·>Я решаю один вопрос, а ты вносишь другие. Притом они вообще никак не связаны с изначальным. Как делать _отступы_ (не выравнивание!) в многострочных выражениях от табов/пробелов никак не зависит. N>Именно что напрямую зависит, потому что эти отступы делаются по многим канонам именно табами, и твоё свободное варьирование их ширины сломает форматирование.
Ну да, отступы — табами. Почему это ломает форматирование?
N>·>Ты мне точно скажи какое количество пробелов нужное? И объясни почему все не используют именно это количество. N>Согласно канону. Который в каждом месте может быть свой.
И что приводит к полному бардаку.
N>Точно так же и с табами. Почему ты считаешь, что обычный отступ вложенности — один таб? Я встречал традицию, где это — два таба. N>А один используется под полуотступ для некоторых особых случаев.
Эээ.. "- Так не делайте так!"(с)
N>Так что твоё представление, что один таб это универсальный закон программного бытия, как минимум поспешно.
Понятно что можно извратить любую идею.
N>·>Не реализуется это на пробелах. Как мне такое реализовать на пробелах, если в окне редактора я хочу видеть четыре пробела, т.к. удобнее читать, а в окне мержа с тремя столбиками мне нужно 1 или два пробела, т.к. иначе в ширину экрана не помещается? N>А если у тебя и с 1 пробелом на таб не поместится? У меня именно так, потому что я предпочитаю крупные шрифты, а писать вообще в 25x80.
Код значит плохой. Он и с пробельными отступами плохой будет. Причём тут табы?
N>Какой-то у тебя ну очень частный случай для оправдания.
Частный?? Ты хочешь сказать, что на самом деле, в общем случае — код с отступом в один пробел и плохо помещается. Я правильно понял?!
N>·>(5) и (6) вообще страх какой-то. Я думал ты по приколу их предложил. N>Не-а, полностью серьёзно.
Ну тогда выравнивай такую каку пробелами, сделав отступ табами.
N>·>ни кстати разъедутся и при простом переименовании функции например. N>Переименование обычно включает в себя и изменение роли, аргументов, etc?
Нет. Просто переименование.
Да даже если происходит изменение аргументов, то явно не всех, а выравнивание едет у всех.
А ещё чаще встречается такая конструкция:
SomeType result = someTerribleMethod(aaa,
bbb);
Т.е. выравнивание портиться будет не только при переименовании метода, но и переменной "result" или её типа "SomeType", а если тип ещё и с параметром "SomeType<ArgType>", то такое спагетти начинается...
N>·> Если тебе и правда интересно моё мнение, то я предпочту (2) или может быть (3), а (1) может сгодиться если первый параметр функции какой-то особый. N>Мне оно интересно, но исключительно в контексте данного обсуждения N>OK, понятно.
На самом деле если пойти дальше, то выравнивание тоже надо запретить вообще везде. Ну может только в каких-то особых частях кода такое ещё имеет смысл... Но это не должно быть повседневно используемым способом форматирования.
N>>>как раз на тему того, как испортится выравнивание при табуляциях, меняющих длину. N>·>Опять двадцать пять. Не надо путать выравниваение (alignment) и отступ (indent). N>Так если и то, и другое делают табами в тех стандартах, где применяются табы, то зачем мне их различать?
Затем, что они — совершенно разные по смыслу. Отступ показывает иерархию вложенности, а выравнивание — вертикальную структуру, табличное отображение.
N>Это если ты утверждаешь, что indentation делаешь табами, а alignment пробелами, то твой подход заметно другой, чем стандартный.
alignment я вообще стараюсь не делать, ибо с ним больше мороки, чем эффекта. Но alignment если делать, то только пробелами. Ибо ты должен ввести ровно столько пробелов, чтобы подогнать под ширину столбца.
N>См. я приводил пример с отступами табами для полей структуры. Вот там у тебя вообще всё съедет к лешим.
А табами и не надо выравнивать. Да и, как мне кажется, выравнивать вообще не надо. По мне такое читается проще:
struct foo
{
/* List of active foo. */struct foo *next;
/* Comment for mumble. and you could write really big comments, not reinventing a new special formatting for them.
And even multiline.
*/struct mumble amumble;
/* Try to align the comments. */int bar;
/* Won't fit in 2 tabs. */struct verylongtypename *baz;
};
/* Head of global foo list. */struct foo *foohead;
N>>>·>Так себе поддерживают, ибо задача не имеет простого алгоритмического решения. Никогда не попадались файлы с разным количеством пробелов в отступе в разных строках? N>>>В смысле — часть табами, часть пробелами? Попадались. И что? N>·>Нет, часть двумя пробелами, часть четырьмя, а местами случайно вставлено три. N>Ну так будет точно так же неровное количество табов. Тому, кто так делает, пофиг на выравнивание при любом подходе. N>(Собственно, я сам такой, когда ну очень спешно что-то делаю... хотя я такое не коммичу)
Нет, просто файл редактируется разными людьми, у которых стоит разное количество пробелов (или даже одним человеком, который решил, что 2 пробела мало, настройки поменял, но сразу весь код менять лениво). Или куски кода кочуют из других файлов, с другими отступами.
А три пробела — часто простая опечатка. Трудно заметить через 11 или 12 пробелов ты тыкнул мышой для начала правки, а с соседними строками разница не заметна.
С табами ошибиться практически невозможно.
N>>>Выдержка единого средства (табы или пробелы) тут важнее, чем выбор между ними; но при выборе уже между ними я предпочту пробелы из-за заведомо меньшей конфликтности для таких ситуаций. N>·>Так с пробелами возникнет конфликт с их количеством. Поэтому я выбираю табы. N>И там тот же конфликт. А рекомендованное количество пробелов обычно соответствует духу языка, насколько его можно сформулировать
Не видел я таких конфликтов. Отступ — 1 таб всегда.
Кстати, даже если тот твой упомянутый стиль с двумя табами — он, конечно, очень странный, но можно поставить размер таба "2" и видеть код в привычном виде. С пробелами же — только мучиться.
N>>>И тут же — я участвовал в разработке софтин, в стиле которых было принято tabstop=8, но shiftwidth=4. Отступ кратный 8 делался только табами, а кратный 4, но не 8 — табы плюс 4 пробела. Между прочим, такой стиль ну очень распространён. И ты его своими "плавными" регулированиями сломаешь на корню N>·>Жуть конечно. Но если ставить ширину таба больше 4, то проблем не будет. N>Так это ж нетипичный вариант. Типичные — 8, 4, 3, 2 — и из них под твоё условие подходит только 8.
Так с табами типичность варианта никого не колышет. Поставю себе таб размером 5 — моё дело, никого не касается.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, mDmitriy, Вы писали:
D>>>не-а... 1-2-3 лишних пробела обычно читабельность не нарушают, в отличии от 1-3 табов по 8 D>·>Ну поставь размер таба в 4. D>и в каком волшебном месте это можно сделать один раз на все?
В том, в котором ты пользуешься. Зачем тебе все?
D>>>а если с кодом надо работать — это проблема форматтера его выровнять так, как я его настроил D>·>А ещё проблема мержа, диффа, патча, ревьювера и т.п. D>нет у меня такой проблемы... "ignore spaces" рулит
Оно не рулит. Оно делает менее информативный дифф, что может запутать ревьювера.
Т.к. когда отступы меняются не по прихоти очередного ре-формата, а реально — это должно означать, что меняется структура кода. Т.е. если у тебя было
if(a)
b;
c;
а стало
if(a)
{
b;
c;
}
строчка "c;" не появится в диффе. Скрывать из диффа изменение "незначащих" пробелов около "c;" — чревато, ревьювер может не заметить изменение логики.
Мало того, вылезает эта же проблема: "и в каком волшебном месте это можно сделать один раз на все?".
D>·>Для установки дефолтного значения: F9 -> Options -> Viewer Settings -> Tab size D>·>Для временного изменения в открытом просмотрщике: Alt+Shift+F9 -> Tab size D>раз
Т.е. ты будешь меня мучить пока на найдёшь кривые проги, которые настроить нормально нельзя?
D>даю еще минуту для Notepada
Фтопку notepad, кто им пользуется?!
D>ну и чтобы два раза не вставать — для просмотрщика строк в отладчике студии (и для текста, для и xml)
Отладчик Студии отображает не код (или ты компиляторы пишешь?).
D>·>Т.е. тебе просто тупо не нравится дефолт в 8 пробелов. Можешь себе локальный рай устроить — поменяй дефолт в 4 пробела. D>мне тупо не нравится/лень/нет времени ползать по настройкам разных программных продуктов и устанавливать у них размер таба D>был приятно удивлен, что есть любители подобного времяпровождения
Один раз настраивается и забывается.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали: D>>и в каком волшебном месте это можно сделать один раз на все? ·>В том, в котором ты пользуешься. Зачем тебе все?
потому что я пользуюсь всем, что наиболее удобно в данный момент
вот понадобился просмотрщик огромных логов — ох, пля...
какой-то сумрачный гений кододизайна решил, что оформлять лог табами — это и есть реализация вековой мечты человечества
"и места меньше занимает"(с), ага...
·>Оно не рулит. Оно делает менее информативный дифф, что может запутать ревьювера. ·>Т.к. когда отступы меняются не по прихоти очередного ре-формата, а реально — это должно означать, что меняется структура кода. Т.е. если у тебя было ·>Мало того, вылезает эта же проблема: "и в каком волшебном месте это можно сделать один раз на все?".
не вылезает... форматтер, который сам меняет логику кода, отправляется в корзину и заносится в черный список один раз и навсегда
·>Фтопку notepad, кто им пользуется?!
я пользуюсь... очень удобный для моих задач
основной недостаток — запускается только один процесс
итак, с notepad вы не справились
D>>ну и чтобы два раза не вставать — для просмотрщика строк в отладчике студии (и для текста, для и xml) ·>Отладчик Студии отображает не код (или ты компиляторы пишешь?).
если я в переменной передаю код, который должен быть динамически скомпилирован, то отладчик отобразит код, как это ни странно
итак, студию вы тоже не победили
·>Один раз настраивается и забывается.
я так и делаю — один раз настраиваю в коде запрет табуляции
Здравствуйте, mDmitriy, Вы писали:
D>·>В том, в котором ты пользуешься. Зачем тебе все? D>потому что я пользуюсь всем, что наиболее удобно в данный момент D>вот понадобился просмотрщик огромных логов — ох, пля... D>какой-то сумрачный гений кододизайна решил, что оформлять лог табами — это и есть реализация вековой мечты человечества D>"и места меньше занимает"(с), ага...
less умеет размер табов. bash тоже. В любом случае, ты не пользуешься всеми инструментами, ты повседневно пользуешься максиум десятком. А если даже и изредка приходится воспользоваться каким-то новым — 8 табов выглядят непривычно, но не смертельно. Больше проблем обычно доставляет другие отличия — размер/цвет/тип шрифтов.
D>·>Оно не рулит. Оно делает менее информативный дифф, что может запутать ревьювера. D>·>Т.к. когда отступы меняются не по прихоти очередного ре-формата, а реально — это должно означать, что меняется структура кода. Т.е. если у тебя было D>·>Мало того, вылезает эта же проблема: "и в каком волшебном месте это можно сделать один раз на все?". D>не вылезает...
Как это? Ты сходу назовёшь как в github/gerrit/gitlab/kdiff3/diff/vmdiff/tortoisemerge включить игнорирование пробелов?
А вообще, если ты постоянно переформатируешь количество пробелов, то наличие табов проблемой не будет.
D>форматтер, который сам меняет логику кода, отправляется в корзину и заносится в черный список один раз и навсегда
Ты не понял. Логику меняет программист, а ревьювер, по привычке игнорировния пробелов, т.к. код постоянно переформатируется, не замечает это изменение.
D>·>Фтопку notepad, кто им пользуется?! D>я пользуюсь... очень удобный для моих задач D>основной недостаток — запускается только один процесс
Это не единственный недостаток. В любом случае, даже в нём лучше использовать табы. Выглядят они конечно, не очень приятно, но терпимо, а вот редактировать с табами гораздо проще. Стирать/набирть/навигировать по 4 пробела сложнее, чем один таб. А auto-indent он не умеет.
D>итак, с notepad вы не справились
С notepad справляются просто — используют notepad++ или чего угодно другое более вменяемое.
D>>>ну и чтобы два раза не вставать — для просмотрщика строк в отладчике студии (и для текста, для и xml) D>·>Отладчик Студии отображает не код (или ты компиляторы пишешь?). D>если я в переменной передаю код, который должен быть динамически скомпилирован, то отладчик отобразит код, как это ни странно D>итак, студию вы тоже не победили
Я Студию последний раз больше 10 лет назад видел, понятия не имею. С современными IDE проблем нет.
D>·>Один раз настраивается и забывается. D>я так и делаю — один раз настраиваю в коде запрет табуляции
Каким образом можно настроить запрет табуляции или запрет использования неправильного количества пробелов? Притом один раз?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали: ·>less умеет размер табов. bash тоже. В любом случае, ты не пользуешься всеми инструментами, ты повседневно пользуешься максиум десятком. А если даже и изредка приходится воспользоваться каким-то новым — 8 табов выглядят непривычно, но не смертельно. Больше проблем обычно доставляет другие отличия — размер/цвет/тип шрифтов.
вы путаете теплое с мягким: шрифты и пр. — это особенности дефолтовых настроек конкретного инструмента, а табы — часть контента
·>Как это? Ты сходу назовёшь как в github/gerrit/gitlab/kdiff3/diff/vmdiff/tortoisemerge включить игнорирование пробелов?
не назову... но точно знаю, что эту галку я исправно ставлю в визарде мержинга, как и игнор регистра
запоминается она в постоянных настройки или нет — не знаю
поскольку галка доступна в процессе, меня не напрягает ее поставить
·>А вообще, если ты постоянно переформатируешь количество пробелов, то наличие табов проблемой не будет.
потому что я сохраняю код уже без них — поэтому и не будет
·>Ты не понял. Логику меняет программист, а ревьювер, по привычке игнорировния пробелов, т.к. код постоянно переформатируется, не замечает это изменение.
не встречал ревьюера, чтобы сам расставлял блоки кода по отступам
·>Это не единственный недостаток. В любом случае, даже в нём лучше использовать табы. Выглядят они конечно, не очень приятно, но терпимо, а вот редактировать с табами гораздо проще. Стирать/набирть/навигировать по 4 пробела сложнее, чем один таб. А auto-indent он не умеет.
а я в нем ничего и не набираю — только смотрю
·>С notepad справляются просто — используют notepad++ или чего угодно другое более вменяемое.
пардон, я и имел ввиду notepad++, разумеется...
·>Я Студию последний раз больше 10 лет назад видел, понятия не имею. С современными IDE проблем нет.
VS 2015 считается вроде как вполне себе современное IDE
·>Каким образом можно настроить запрет табуляции или запрет использования неправильного количества пробелов? Притом один раз?
VS, Решарпер и автоформат без фанатизма при сохранении
Здравствуйте, mDmitriy, Вы писали:
D>·>less умеет размер табов. bash тоже. В любом случае, ты не пользуешься всеми инструментами, ты повседневно пользуешься максиум десятком. А если даже и изредка приходится воспользоваться каким-то новым — 8 табов выглядят непривычно, но не смертельно. Больше проблем обычно доставляет другие отличия — размер/цвет/тип шрифтов. D>вы путаете теплое с мягким: шрифты и пр. — это особенности дефолтовых настроек конкретного инструмента, а табы — часть контента
_Ширина_ табов — это особенности дефолтовых настроек конкретного инструмента.
D>·>Как это? Ты сходу назовёшь как в github/gerrit/gitlab/kdiff3/diff/vmdiff/tortoisemerge включить игнорирование пробелов? D>не назову... но точно знаю, что эту галку я исправно ставлю в визарде мержинга, как и игнор регистра D>запоминается она в постоянных настройки или нет — не знаю D>поскольку галка доступна в процессе, меня не напрягает ее поставить
Чем галка принципиально отличается от поля с циферкой "размер таба"?
D>·>А вообще, если ты постоянно переформатируешь количество пробелов, то наличие табов проблемой не будет. D>потому что я сохраняю код уже без них — поэтому и не будет
Да и с ними не будет.
D>·>Ты не понял. Логику меняет программист, а ревьювер, по привычке игнорировния пробелов, т.к. код постоянно переформатируется, не замечает это изменение. D>не встречал ревьюера, чтобы сам расставлял блоки кода по отступам
Перечитай ещё раз на что отвечаешь. Ты в смысл фразы не вникаешь что-ли? Или я как-то непонятно пишу? Каким образом из моих слов можно вывести, что ревьювер что-то расставляет?
D>·>Это не единственный недостаток. В любом случае, даже в нём лучше использовать табы. Выглядят они конечно, не очень приятно, но терпимо, а вот редактировать с табами гораздо проще. Стирать/набирть/навигировать по 4 пробела сложнее, чем один таб. А auto-indent он не умеет. D>а я в нем ничего и не набираю — только смотрю
Хых, даже less и то лучше для просмотра файлов.
D>·>С notepad справляются просто — используют notepad++ или чего угодно другое более вменяемое. D>пардон, я и имел ввиду notepad++, разумеется...
Ээээ... Ну тогда и проблем нет: http://stackoverflow.com/questions/23181724/how-i-can-increase-tab-width-in-notepad-v6-5
D>·>Я Студию последний раз больше 10 лет назад видел, понятия не имею. С современными IDE проблем нет. D>VS 2015 считается вроде как вполне себе современное IDE
Я её не видел, последнюю я видел вроде 2003 что-ли, проблем с табами не помню. Поковыряйся в настройках, должно быть.
D>·>Каким образом можно настроить запрет табуляции или запрет использования неправильного количества пробелов? Притом один раз? D>VS, Решарпер и автоформат без фанатизма при сохранении
_запрет_? Т.е. если я файлик поредактирую в notepad какая магия заставит поставить правильное количество пробелов?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, seregaa, Вы писали:
S>Ответил в предыдущем сообщении.
Только про github.
Что делать с WinMerge и прочим зоопарком инструментов? WinMerge имеет ровно одну глобальную настройку — табы, либо пробелы. Нельзя настроить пробелы для C# и табы для JS. У нас везде кроме фронт-енда используются пробелы, а архитектор фронтенда любит табы и каждые две-три недели ругается что чей-то коммит ему опять всю разметку испортил.
Здравствуйте, ·, Вы писали:
·> пробелы запрещены для отступов законодательно, высшая мера наказания и кода с пробелами не существует.
Если клавишу пробела заблокировать или удалить, то проблем, разумеется, не будет.
В проектах, где в соглашениях по оформлению кода требуется таб, я регулярно видел попадающиеся пробелы. Но это ещё что.. слегка портит внешний вид кода, но не фатально. Из фатального я один раз видел критический баг, появившийся из-за таба. К обсуждаемой теме оно, конечно, не относится, но баг был очень интересным. Сначала один разработчик отформатировал код табами:
Таких вызовов было почти с десяток, разбросанных по коду.
Потом этот код отрефакторили, убрали большую часть аргументов и переформатировали, переписав в одну строчку
SomeClass.SomeMethod(Argument1, Argument2);
Но при этом разделителем остался таб, т.е. фактически там было:
SomeClass.SomeMethod(Argument1,\tArgument2);
А ещё через пару недель один разработчик решил поменять параметры местами и сделал это через поиск и замену. И, разумеется, он поменял строку "Argument1, Argument2" на "Argument2, Argument1", но в одном месте, где между аргументами попался таб, аргументы так и остались в том же порядке.
Здравствуйте, Artem Korneev, Вы писали:
AK>Что делать с WinMerge и прочим зоопарком инструментов? WinMerge имеет ровно одну глобальную настройку — табы, либо пробелы. Нельзя настроить пробелы для C# и табы для JS. У нас везде кроме фронт-енда используются пробелы, а архитектор фронтенда любит табы и каждые две-три недели ругается что чей-то коммит ему опять всю разметку испортил.
Но виноват, разумеется, не зоопарк у вас в проекте, а табы.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Таб тут причём? Та же грустная история произошла бы, если бы был не таб, а два пробела. Мораль одна: пишите юнит-тесты. Без них за рефакторинг лучше не браться, особенно если используется примитивная IDE.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали: ·>_Ширина_ табов — это особенности дефолтовых настроек конкретного инструмента.
что при отсутствии табов вообще не имеет значения
·>Чем галка принципиально отличается от поля с циферкой "размер таба"?
еще раз — галка попадается по ходу мержинга, ее не надо отдельно искать в настройках
·>Да и с ними не будет.
если бы их не было, не было бы всего этого треда вообще
·>Перечитай ещё раз на что отвечаешь. Ты в смысл фразы не вникаешь что-ли? Или я как-то непонятно пишу? Каким образом из моих слов можно вывести, что ревьювер что-то расставляет? ·>Т.к. когда отступы меняются не по прихоти очередного ре-формата, а реально — это должно означать, что меняется структура кода. Т.е. если у тебя было ·>if(a) ·> b; ·>c;
·>а стало ·>if(a) ·>{ ·> b; ·> c; ·>}
а это кто писал? или это не изменение структуры кода?
D>>а я в нем ничего и не набираю — только смотрю ·>Хых, даже less и то лучше для просмотра файлов.
может быть... но не попадался пока
·>Ээээ... Ну тогда и проблем нет: http://stackoverflow.com/questions/23181724/how-i-can-increase-tab-width-in-notepad-v6-5
итак, 2 программных продукта победили, ура
·>Я её не видел, последнюю я видел вроде 2003 что-ли, проблем с табами не помню. Поковыряйся в настройках, должно быть.
опять 25... зачем мне ковыряться в настройках, если у меня табов нет и не будет7
·>_запрет_? Т.е. если я файлик поредактирую в notepad какая магия заставит поставить правильное количество пробелов?
причем тут нотепад? я код пишу в студии, он меня там и волнует
в студии есть механизм автоматического избавления от табов
Здравствуйте, mDmitriy, Вы писали:
D>·>_Ширина_ табов — это особенности дефолтовых настроек конкретного инструмента. D>что при отсутствии табов вообще не имеет значения
А при отсутствии цветных мониторов не имеет значения настройки цвета. И что? К чему клонишь-то?
D>·>Чем галка принципиально отличается от поля с циферкой "размер таба"? D>еще раз — галка попадается по ходу мержинга, ее не надо отдельно искать в настройках
Т.е. аппелируешь к особенностям конкретного UI, клёво.
А если подумать, это лишь говорит о том, что бардак с пробелами случается чаще и доставляет больше проблем, чем с табами. Поэтому и вынесли этот пунктик в основной сценарий использования UI.
D>·>Да и с ними не будет. D>если бы их не было, не было бы всего этого треда вообще
Если бы никто пробелами не делал отступы — тоже бы треда не было вообще. И что?
D>а это кто писал? или это не изменение структуры кода?
Я писал, что код меняет программист. А ревьювер — ревьювит, с рекомеднованным тобой игнором пробельных символов. Мой тезис — игнорировать изменение пробельных символов — плохая практика ведущая к проблемам. И, как я вижу, вынужденная при частом использовании автоформаттеров пробелов, что неизбежно, ибо не существует единственно верного количества пробелов в отступах. Если отступы сделаны табами, то переформатировать не надо вообще, достаточно менять ширину табов в настройках конкретных инструментов.
Если всё равно непонятно, попробуй подумать с другой стороны. Зачем вообще делают отступы? Если они так не важны — не делай их вообще, тогда и игнорировать не придётся, и автоформаттеры не нужны. А если таки важны, то почему ты решил они становятся неважны в диффе, почему ты предлагаешь их игнорировать?
D>·>Ээээ... Ну тогда и проблем нет: http://stackoverflow.com/questions/23181724/how-i-can-increase-tab-width-in-notepad-v6-5 D>итак, 2 программных продукта победили, ура
Да собственно любые более менее современные профессиональные редакторы/просмотрщики/среды позволяют.
D>·>Я её не видел, последнюю я видел вроде 2003 что-ли, проблем с табами не помню. Поковыряйся в настройках, должно быть. D>опять 25... зачем мне ковыряться в настройках, если у меня табов нет и не будет7
Затем же зачем ты ковыряешься с автоформаттерами, количеством пробелов, игнором пробелов и прочей фигнёй.
D>·>_запрет_? Т.е. если я файлик поредактирую в notepad какая магия заставит поставить правильное количество пробелов? D>причем тут нотепад? я код пишу в студии, он меня там и волнует D>в студии есть механизм автоматического избавления от табов
Причём тут табы? Я спрашиваю "поставить правильное количество пробелов".
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
UPS>-- НЕ ВЫРОВНЕННАЯ ВЕРСИЯ.
UPS>CREATE TABLE DocStream (
UPS> Id BIGINT NOT NULL,
UPS> MD5 CHAR(32) NULL,
UPS> SHA1 CHAR(40) NULL,
UPS> Status INT NOT NULL
UPS>);
UPS>
UPS>
UPS>-- ВЫРОВНЕННАЯ ВЕРСИЯ.
UPS>CREATE TABLE DocStream (
UPS> Id BIGINT NOT NULL,
UPS> MD5 CHAR(32) NULL,
UPS> SHA1 CHAR(40) NULL,
UPS> Status INT NOT NULL
UPS>);
UPS>
UPS>Вторая вроде бы лучше читается, но я так на всякий случай никогда не делаю, потому что ни в каких "coding convention" таких советов не читал.
-- ВЫРОВНЕННАЯ ВЕРСИЯ.create table DocStream
(
Id bigint not null,
Md5 char(32) null,
Sha1 char(40) null,
Status int not null
);