LINUX.ORG.RU

Использовать пробелы для отступов

 , ,


1

1

Ищу хотя бы одну конструктивную причину для сабжа. Именно в плане отступов (indentation), а не выравнивания (alignment).

Навеяло гугловым cpplint.py, который панически засирает вывод предупреждениями о табах на каждую (!) строчку. Что такого ужасного?

Сам пользуюсь табуляцией, но довольно много людей (и проектов) используют пробелы. Вот и заинтересовало - может быть, они действительно чем-то удобнее, только я не знаю? Холивар не нужен, нужна причина. Гугль не нашёл ничего, кроме кидания какашек в сторону табов.

ЗЫ. Про «не смешивать в одном проекте» знаю.

ЗЫЫ. Про whitespace знаю.

UPD: Заодно ищется причина необходимости (незаменимости) табов, если такие есть. Навскидку только Makefile приходит в голову.

UPD: как минимум одна причина найдена:

Dendy

- когда компилятор говорит, мол у тебя ошибка в такой-то колонке, начинается путаница, имелась в виду визуальное или реальное количество символов; проблема легко решается на уровне редакторов кода;

★★★

Последнее исправление: schizoid (всего исправлений: 2)

Ответ на: комментарий от drBatty

Куда «пришла»? Я хочу сделать коммит. Мне говорят, что со времени последнего апдейта версия на сервере изменилась, и нужно выполнять слияние. Нет никаких Алис и Бобов, есть версия на сервере (куда раньше залили Алиса и Боб, и что они там делали с этими версиями мне неизвестно) и рабочая копия.

vurdalak ★★★★★
()
Ответ на: комментарий от iVS

Да, где-то можно настроить, чтобы были видны маленькие серенькие точки на месте табов и пробелов, чтобы хоть как-то их различать.

этого разве что ed и notepad не умеют.

drBatty ★★
()
Ответ на: комментарий от vurdalak

Куда «пришла»? Я хочу сделать коммит. Мне говорят, что со времени последнего апдейта версия на сервере изменилась, и нужно выполнять слияние. Нет никаких Алис и Бобов, есть версия на сервере (куда раньше залили Алиса и Боб, и что они там делали с этими версиями мне неизвестно) и рабочая копия.

открой для себя DVCS, нет там никакого «центрального сервера». И никто тебе ничего не говорит. Например, Алиса принесла тебе флешку с кодом, и Боб тоже принёс флешку. И что ты будешь делать? Ну или просто Алиса прислала патч, но ты тоже не ждал, а сам написал. Писали вы на основе одной и той же ревизии, но как это смержить?

drBatty ★★
()
Ответ на: комментарий от drBatty

этого разве что ed и notepad не умеют.

Вопрос как раз не в умении, а нужности такой подсветки. мне совсем не в кайф всматриваться в эти самые серенькие точки.

iVS ★★★★★
()
Ответ на: комментарий от ananas

о чем вообще спор? man expand, man unexpand, man indent

первый мудрый человек в споре)))

iVS ★★★★★
()
Ответ на: комментарий от iVS

Вопрос как раз не в умении, а нужности такой подсветки. мне совсем не в кайф всматриваться в эти самые серенькие точки.

1. сделай их зелёненькими.

2. отключи. Я вот отключил - как я уже говорил, VIM сам вставляет нужные иденты. Ну а мешать пробелы с табуляцией ещё и в выравнивании(не в отступах) может только идиот и ССЗБ.

drBatty ★★
()
Ответ на: комментарий от drBatty

Ну а мешать пробелы с табуляцией ещё и в выравнивании(не в отступах) может только идиот и ССЗБ.

О чем я и говорю.

iVS ★★★★★
()
Ответ на: комментарий от drBatty

это не даёт тебе права говорить «всегда». Если ты фанат 6и пробельного таба, это тебе поможет. Мне пофиг, и 8 норм.

ну вот у меня 8, и less (и не только) очень неприятно выглядит, когда три табуляции - пол экрана грубо говоря.

holywar…

ничуть :) я и сам табами пользуюсь.

меня юзабилити тут интересует, может действителньо с пробелами можно сделать удобнее?...

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от drBatty

А кто говорил о предупреждениях? Проверять качество оформления кода — не задача компилятора.

P.S. Меня джава тоже не предупредит, если я не буду ставить пробел перед скобочкой цикла или не буду выделять одну строчку тела if в фигурные скобки. Но стандарт предписывает делать так, и все кто не делает обрекают на муки читающих их код.

vurdalak ★★★★★
()
Ответ на: комментарий от drBatty

открой для себя DVCS, нет там никакого «центрального сервера»

Что, уже можно сделать pull из нескольких мест одновременно?

Например, Алиса принесла тебе флешку с кодом, и Боб тоже принёс флешку.

Ты будешь мержить либо по очереди, либо вручную без помощи IDE, так как в ней нет кнопочки «слить рабочую копию с флешками».

vurdalak ★★★★★
()
Ответ на: комментарий от geekless

Любители тайловых WM с окошками шириной 200 пикселей, конечно же.

queen3 ★★★★★
()
Ответ на: комментарий от invy

ну вот у меня 8, и less (и не только) очень неприятно выглядит, когда три табуляции - пол экрана грубо говоря.

да, неудобно. Настрой. Правда лично я less'ом код не смотрю.

меня юзабилити тут интересует, может действителньо с пробелами можно сделать удобнее?...

глупый спор ИМХО. Да и вообще, это проблема создателей редакторов и IDE. Говорю-же: vim решает.

drBatty ★★
()
Ответ на: комментарий от vurdalak

А кто говорил о предупреждениях? Проверять качество оформления кода — не задача компилятора.

ну языку C (и подомным) плевать на количество пробельных символов, и на сами символы. Хоть '\r' пиши(не пробовал, но думаю взлетит). Выглядеть в cat это правда будет убого. Ну да ладно.

P.S. Меня джава тоже не предупредит, если я не буду ставить пробел перед скобочкой цикла или не буду выделять одну строчку тела if в фигурные скобки. Но стандарт предписывает делать так, и все кто не делает обрекают на муки читающих их код.

вот. Потому надо писать так, что-бы было УДОБНО ЧИТАТЬ. И править тоже. С табами(мешаниной) править неудобно, со строками 80+ читать не удобно (хоть у тебя 100`` монитор), потому и то и то - быдлокод. пробельные символы перед запятой - тоже быдлокод.

drBatty ★★
()
Ответ на: комментарий от drBatty

ну языку C (и подомным) плевать на количество пробельных символов, и на сами символы.

Языку плевать. Но есть соглашения (для жабы это code conventions от оракла, не знаю как в си называется), которые определяют общий стиль оформления кода, чтобы не было путаницы, когда все оформляют по-разному, и при обмене кодом обоим будет трудно читать это.

Потому надо писать так, что-бы было УДОБНО ЧИТАТЬ.

Так я об этом и говорил.

vurdalak ★★★★★
()

Я использую и то и то. Табами делаются отступы, пробелами настраивается отступ внутри отступа. При этом я убиваю сразу двух зайцев — отображение табов настраиваемо индивидуально, исходники не разъезжаются при другой настройке отображения табов.

Reset ★★★★★
()
Ответ на: комментарий от vurdalak

Но стандарт предписывает делать так

Реквестирую ссылку на стандарт C, либо иного языка, который требует подобное.

anonymous
()
Ответ на: комментарий от vurdalak

Языку плевать. Но есть соглашения (для жабы это code conventions от оракла, не знаю как в си называется)

в C это называется guidelines, и везде они свои, самые правильные. Вот их правильность мы и обсуждаем. Уже лет 40 как.

Так я об этом и говорил.

правильно говорил. многие просто путают с «удобнее писать». Например удобнее реже нажимать на enter, а если их критиковать, они говорят, что дескать «у меня монитор большой». Да хоть йух! Начало строки устанешь искать. Проще завернуть такой быдлокод обратно.

drBatty ★★
()
Ответ на: комментарий от Reset

Я использую и то и то. Табами делаются отступы, пробелами настраивается отступ внутри отступа.

тебя будут убивать олдовые мэны вместе с неофитами. Я только один редактор знаю, который такой стиль умеет - vim. Остальные… Ну и emacs конечно, но он для инопланетян.

drBatty ★★
()
Ответ на: комментарий от drBatty

многие просто путают с «удобнее писать».

Когда пишешь один, это нормально. Но рано или поздно придется свой код кому-то показать или начать работать в команде, и вот тут-то тебя заставят придерживаться определенного формата. Лучше сразу научиться, чем потом переделывать.

vurdalak ★★★★★
()
Ответ на: комментарий от anonymous

PEP-8 не стандарт языка.

это Дао языка. К счастью - только одного.

drBatty ★★
()
Ответ на: комментарий от drBatty

тебя будут убивать олдовые мэны вместе с неофитами.

Олдовые мэны используют Ъ-редакторы, которые такое умеют. А на всякую школоту с блокнотами и прочими эклипсами мне положить с прибором :)

Reset ★★★★★
()
Ответ на: комментарий от vurdalak

Я лично кладу *** на этот «стандарт» и пишу как мне нравится.

Reset ★★★★★
()
Ответ на: комментарий от vurdalak

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

не. Хуже. Если ты в своём монастыре просыпался в 7 часов, то тебя заставлять как все в этом монастыре просыпаться в 5:30 никто не заставит. Просто поспать не дадут, и голодным останешься. А так - пожалуйста.

Лучше сразу научиться, чем потом переделывать.

есть утилиты для автопеределки. А можно просто научится юзать пару-тройку распространённых стилей. Это не сложно, на самом-то деле.

drBatty ★★
()
Ответ на: комментарий от tailgunner

Тем более не вижу причин не использовать одновременно табы и пробелы.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Олдовые мэны используют Ъ-редакторы, которые такое умеют. А на всякую школоту с блокнотами и прочими эклипсами мне положить с прибором

а… ну ладно.

drBatty ★★
()
Ответ на: комментарий от vurdalak

Олдовые мэны используют Ъ-редакторы

И пишут хелловорлд 300 часов.

в Ъ редакторе примерно в 28 раз быстрее, чем в твоей IDE.

drBatty ★★
()
Ответ на: комментарий от drBatty

Я пишу и в редакторах, и в IDE. В Ъ-редакторе можно имеено писать, а в IDE иногда достаточно только нажимать хоткеи и первые буквы или аббревиатуры, а все остальное происходит автоматически. Ну и посмотрел бы я, как ты будешь рефакторить код в виме (например, перенос метода, который используют 50 классов).

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Ну и посмотрел бы я, как ты будешь рефакторить код в виме (например, перенос метода, который используют 50 классов).

Ты не поверишь. Легко.

drBatty ★★
()
Ответ на: комментарий от vurdalak

там их как грязи, на самом деле. Кнопки видишь? Вот это всё команды. Замена это :s. Есть макросы, куча буферов обмена, регистры, и хрен знает ещё что.

drBatty ★★
()
Ответ на: комментарий от schizoid

Мне почему-то тебя стало жалко.

ты таким никогда не был? тебе повезло. А я - был.

drBatty ★★
()
Ответ на: комментарий от drBatty

Мне что, вручную искать все файлы, где этот метод используется, и заменять там? Вот поэтому я и использую IDE, там это делается за пару нажатий клавиш.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

мы как-то по разному понимаем рефакторинг. Причём тут замена имени какого-то класса в 50и файлах? (что в vim тоже есть)

drBatty ★★
()
Ответ на: комментарий от drBatty

Ну вот смотри. У меня есть метод в классе (пускай статический). Я решил перенести его в другой класс. На этот метод 50 классов ссылаются как на Class1.method(), это нужно заменить на Class2.method(). Как мне это сделать, не лазая по проекту в поисках этих битых ссылок?

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Class1.method(), это нужно заменить на Class2.method(). Как мне это сделать, не лазая по проекту в поисках этих битых ссылок?

sed?

drBatty ★★
()
Ответ на: комментарий от drBatty

Ага, и include/import sed'ом подставлять? Где-то этот класс не подключен, а где-то подключен.

Или другой пример. Как сделать find usages для метода в проекте? Если find'ом по имени метода, то как ты определишь, что это метод именно с таким набором аргументов и именно этого класса?

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Ага, и include/import sed'ом подставлять?

почему - нет?

Где-то этот класс не подключен, а где-то подключен.

если нет #include «foo.h» не меняем, если было - меняем. Препроцесср и sed работают одинаково.

Или другой пример. Как сделать find usages для метода в проекте?

вообще-то для всего этого есть два пути:

1) плагины

2) так найти. руками, и/или sed'ом. «руками» это встроенными фичами вима.

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

drBatty ★★
()
Ответ на: комментарий от drBatty

Может быть, я просто не нашел нужных плагинов. Но IDE это делает быстрее, и никакой sed не нужен. Плюс индексация всяческих поисков (я могу открыть класс мгновенно, введя аббревиатуру имени). И я молчу про отображение всяких magic numbers, ошибок абстракции, подсветки ошибок и прочего.

В виме тоже пишу в тех случаях, когда для ЯП нет годной IDE.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Но IDE это делает быстрее, и никакой sed не нужен.

я тоже так думал. Теперь не думаю. IDE может выполнить 20 задач. Потому приходится мучится, затачивая задачу под ту функцию, что умеет IDE. А вот sed может всё что угодно. Правда учится надо. Часа два. За то потом…

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.