Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > отступы


Автор: crin 31.1.2009, 12:35
Сам использую tab, и до сих пор думал что это идеальный вариант, так как в редакторе можно настроить сколько символов будет отображать tab,  но недавно прочитал статьи, которые заставили задуматся, идеальный ли это вариант. Пока не пишу что я прочитал, так как хочу узнать ваше мнение.

И хотелось бы узнать почему вы используете тот вариант который выбрали.

Добавлено через 13 минут и 2 секунды
может кто-то напишет почему он выбрал этот стиль smile 

Автор: crin 31.1.2009, 13:52
50/50

Цитата(crin @  31.1.2009,  12:35 Найти цитируемый пост)
может кто-то напишет почему он выбрал этот стиль

 smile 

Автор: Lazin 31.1.2009, 14:11
tab нельзя использовать, если в моем редакторе tab - 4 пробела а в твоем 3, то втой код в моем редакторе будет выглядеть нечитаемым.
зы 
все современные редакторы кода, умеют вместо табов вставлять пробелы, и когда нажимаешь на bacspace удалять сразу все N пробелов, так, как будто там был символ табуляции

Автор: Void 31.1.2009, 14:20
Упарившись с чужим кодом, использующим то 4, то 8, то 2 пробела на табуляцию в перемежку с пробелами (понять это можно только из поехавшего форматирования, потому что никаких директив редактору, как правило, нет), сам использую только пробелы.

Автор: crin 31.1.2009, 14:22
Цитата(Lazin @  31.1.2009,  14:11 Найти цитируемый пост)
tab нельзя использовать, если в моем редакторе tab - 4 пробела а в твоем 3, то втой код в моем редакторе будет выглядеть нечитаемым.

 smile 

в некоторых стандартов рекомендуют tab
http://rsdn.ru/article/mag/200401/codestyle.XML
Цитата

Стиль кода
Оформление

   1. Используйте табуляцию, а не пробелы для отступов. В средах типа VS лучше использовать режим табуляции. Его можно настроить в диалоге Options -> Text Editor -> Ваш_любимый_язык ->Tabs: Indenting = Smart, Tabs = Keep Tabs. В общем, это настройки по умолчанию для многих языков.

Автор: nickless 31.1.2009, 15:02
Однозначно пробелы, ибо
Цитата(Void @  31.1.2009,  13:20 Найти цитируемый пост)
Упарившись с чужим кодом, использующим то 4, то 8, то 2 пробела на табуляцию в перемежку с пробелами (понять это можно только из поехавшего форматирования, потому что никаких директив редактору, как правило, нет), сам использую только пробелы. 


Автор: Любитель 31.1.2009, 16:46
Пробелы в файле. Таб в редакторе. И, конечно, опция замены табов на пробелы.

Автор: JackYF 1.2.2009, 16:25
Табы.

Автор: Lazin 1.2.2009, 16:56
Цитата(JackYF @  1.2.2009,  16:25 Найти цитируемый пост)
Табы

аргументы?

Автор: December 1.2.2009, 18:05
Только пробелы.
В командной работе наличие любителей табов с рандомным размером табуляции регулярно вызывает острейшие приступы агрессии.

Автор: Carnifex 1.2.2009, 20:39
Табы конечно. 
Ибо тот, кто смотрит код может регулировать отступы по своему вкусу, меняя размер таба в редакторе

Автор: Любитель 1.2.2009, 21:08
Цитата(Carnifex @  1.2.2009,  20:39 Найти цитируемый пост)
Ибо тот, кто смотрит код может регулировать отступы по своему вкусу, меняя размер таба в редакторе 

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

Автор: Lazin 1.2.2009, 21:10
Цитата(Carnifex @  1.2.2009,  20:39 Найти цитируемый пост)
Ибо тот, кто смотрит код может регулировать отступы по своему вкусу, меняя размер таба в редакторе

а что прикажешь делать, если я использую исходники разных людей, которые используют табы для форматирования и у каждого из которых свой взгляд на то, скольким символам прбела равен один таб? smile 

Автор: THandle 1.2.2009, 21:21
Только пробелы.

Автор: Carnifex 1.2.2009, 21:32
Цитата(Любитель @  1.2.2009,  21:08 Найти цитируемый пост)
Видать вам никогда не приходилось выравнивать код несколько за рамками того, что можно сделать только табами. И не попадался чужой подобный код. 

Честно - нет, не приходилось. Но правило использовать пробелы вместо табов, эти исходники исправляет?
Цитата(Lazin @  1.2.2009,  21:10 Найти цитируемый пост)
а что прикажешь делать, если я использую исходники разных людей, которые используют табы для форматирования и у каждого из которых свой взгляд на то, скольким символам прбела равен один таб? 

Выставить в редакторе размер таба на свой вкус. Другое дело, если у них разные взгляды на количество табов, или они мешают и то и другое.

Автор: Alexeis 1.2.2009, 22:05
  И то и другое, просто все табы заменяются пробелами, потому фактически пробелами. Сочетание приятного с полезным. 

Автор: Lazin 1.2.2009, 22:17
Цитата(Carnifex @  1.2.2009,  21:32 Найти цитируемый пост)
Но правило использовать пробелы вместо табов, эти исходники исправляет?

еще как, исходник везде выглядит одинаково

Автор: Carnifex 1.2.2009, 22:58
Я всё-таки имел ввиду, что всё-таки исходники плохо отформатированы не из-за табов, а из-за плохого форматирования.
К тому же зачем исходникам выглядеть везде одинаково, если при отступах табами они будут выглядеть так, как пожелает тот, кто их смотрит.
Вдобавок, если мы имеем два файла, которые были написаны разными людьми с разным количеством отступных пробелов, то если эти два файла скомпоновать (при наличии необходимости, ессно) то форматирование будет разным на протяжении одного файла, а с табом на отступ такого не будет, не зависимо от того, какие отступы использовали эти люди.
В общем табы-то, объективно лучше
Это ещё не считая экономии места на жёстком диске и времени компиляции, особенно при больших уровнях вложенности smile 

Автор: Любитель 2.2.2009, 02:32
Цитата(Carnifex @  1.2.2009,  21:32 Найти цитируемый пост)
Но правило использовать пробелы вместо табов, эти исходники исправляет?

Смотри. Ты просто, наверно, не понял о чём речь. Простой пример (чисто принцип - понятно, что строки такими маленькими не будут):
Код

void f(int startX, int endX,
          int startY, int endY)


Типа выровнено. Если выравнивать пробелами - везде нормально. Табами - очень непредсказуемо. Таб как клавиша хорош. Но в файле - только пробелы.

Цитата(Carnifex @  1.2.2009,  22:58 Найти цитируемый пост)
Вдобавок, если мы имеем два файла, которые были написаны разными людьми с разным количеством отступных пробелов, то если эти два файла скомпоновать (при наличии необходимости, ессно) то форматирование будет разным на протяжении одного файла, а с табом на отступ такого не будет, не зависимо от того, какие отступы использовали эти люди

Мнимая гибкость табов работает только на простом коде. А насчёт размера отступов в двух файлов - для этого есть кодестайлы и всякие автоформаты (в иде или отдельной утилитой). Неужели отступы единственный момент, где может быть различие?! Их гораздо больше.

Цитата(Carnifex @  1.2.2009,  22:58 Найти цитируемый пост)
Это ещё не считая экономии места на жёстком диске и времени компиляции, особенно при больших уровнях вложенности 

Контрольный выстрел? smile Даёшь программы в одну строчку! Надо экономить время программистов smile

Автор: MAKCim 2.2.2009, 09:56
табы

Автор: vinter 2.2.2009, 10:06
пробелы

Автор: JackYF 2.2.2009, 13:07
Цитата(Lazin @  1.2.2009,  15:56 Найти цитируемый пост)
аргументы? 

Три (два, пять, четыре, восемь) пробела это три пробела. Таб же - логическая единица отступа. Привести чужой код к читаемому виду я всегда могу одной командой редактора (в особо запущенных случаях - двумя-тремя). Как-то так. На правильность не претендую, такой вот у меня подход.

Автор: December 2.2.2009, 13:24
Как показывает практика, люди, которые используют табы, часто имеют в коде мешанину из табов и пробелов. Например, сами тулы могут вставлять пробелы в тех или иных ситуациях. Вот это-то и плохо.

Автор: LSD 2.2.2009, 14:12
Цитата(December @  2.2.2009,  13:24 Найти цитируемый пост)
Как показывает практика, люди, которые используют табы, часто имеют в коде мешанину из табов и пробелов.

Именно. Например сделать такое выравнивание:
Код

getReportInstancesByAssignment(assignmentId, 
                               requestInfo.getReportStartDate(), 
                               requestInfo.getReportEndDate(), 
                               requestInfo.getFeatureName());

без пробелов - нельзя. Если мы используем только пробелы - то коды выглядит всегда отформатированным. Если пробелы и табы, то при другом размере таба, все форматирование разъедется. По этой причине, читать Sun-овские исходники довольно проблематично. Часть кода отформатирована на размер таба 8, другая на 4.

Плюс разные размеры табов, кто-то ставит себе 8, в результате у него получаются очень большие отступы и очень много "заворачиваний" длинных строк. А тот кто ставит таб 2 вынужден смотреть на код написанный "встолбик" smile 

Автор: ksili 2.2.2009, 14:26
По-моему, оптимальный таб - 4 пробела. А всем, кто использует другое количество, следует убить себя об стенку.

Автор: LSD 2.2.2009, 14:32
Цитата(ksili @  2.2.2009,  14:26 Найти цитируемый пост)
По-моему, оптимальный таб - 4 пробела. А всем, кто использует другое количество, следует убить себя об стенку.

Вот так приверженцы таба дискредитировали саму идею таба smile

Автор: serger 5.2.2009, 06:44
 smile 
Хотя как получится..

Автор: Ch0bits 5.2.2009, 08:48
Только табы (размером в 4 пробела), ибо IDE у нас в конторе все используют одинаковую.

Автор: Lazin 5.2.2009, 08:56
Цитата(Ch0bits @  5.2.2009,  08:48 Найти цитируемый пост)
IDE у нас в конторе все используют одинаковую

у нас то-же, но это не мешает отдельным личностям менять ширину таба

Автор: bars80080 5.2.2009, 10:44
Цитата(LSD @  2.2.2009,  13:12 Найти цитируемый пост)
Как показывает практика, люди, которые используют табы, часто имеют в коде мешанину из табов и пробелов.

такая мешанина возникает только когда копируешь чужой код. чего хорошего бегать курсором по куче пробелов?

Автор: Lazin 5.2.2009, 11:54
Цитата(bars80080 @  5.2.2009,  10:44 Найти цитируемый пост)
чего хорошего бегать курсором по куче пробелов? 

/me бегает по словам, строкам etc. smile 

Цитата(bars80080 @  5.2.2009,  10:44 Найти цитируемый пост)
такая мешанина возникает только когда копируешь чужой код

неправда, например пишу я функцию с кучей аргументов
Код

void.function_name.(....first_type first_param,
--->--->--->--->--->--->second_type second_param,
--->--->--->--->--->--->third_type, third_param);

---> - таб . - пробел smile
а теперь поменяем размер таба: 
Код

void.function_name.(....first_type first_param,
---->---->---->---->---->---->second_type second_param,
---->---->---->---->---->---->third_type, third_param);
OMFG!!!!

Автор: LSD 5.2.2009, 12:08
Цитата(bars80080 @ 5.2.2009,  10:44)
Цитата(LSD @  2.2.2009,  13:12 Найти цитируемый пост)
Как показывает практика, люди, которые используют табы, часто имеют в коде мешанину из табов и пробелов.

такая мешанина возникает только когда копируешь чужой код. чего хорошего бегать курсором по куче пробелов?

Если присмотреться повнимательней к процитированному сообщению, то можно заметить что:
1) это не моё утверждение, а December-а
2) в моём сообщении описана ситуация, когда одними табами выравнивание не сделать

Автор: crin 5.2.2009, 12:54
Lazin, 

Код

--->void.function_name.(....first_type first_param,
--->........................second_type second_param,
--->........................third_type, third_param);

а почему не так?

Автор: Lazin 5.2.2009, 13:11
Цитата(crin @  5.2.2009,  12:54 Найти цитируемый пост)
а почему не так? 

потому-что в этом случае уже проще делать так
Код

....void.function_name.(....first_type first_param,
............................second_type second_param,
............................third_type, third_param);

Автор: crin 5.2.2009, 13:19
Код

class Begin
{
--->void.function_name.(....first_type first_param,
--->........................second_type second_param,
--->........................third_type, third_param)
--->{
--->--->if (true) {
--->--->--->a = 10;
--->--->--->b = 8l
--->--->}

--->--->for (int i = 0; i < 3; i++) {
--->--->--->a += 10;
--->--->--->b -=3;
--->--->}

--->--->if (a == 40
--->--->....&& b == -8) 
--->--->---> a= b;

--->}
}

думаю так понятней

Добавлено через 2 минуты и 10 секунд
Цитата(Lazin @  5.2.2009,  13:11 Найти цитируемый пост)
проще делать так

почему?
в моём варианте отступ может быть и 4 и 8
и код вроде не расползается

Автор: Любитель 5.2.2009, 13:33
Вот это и есть мешанина smile И зачем она нужна?

Автор: crin 5.2.2009, 13:34
Цитата(Любитель @  5.2.2009,  13:33 Найти цитируемый пост)
И зачем она нужна? 

мне так удобней и
Цитата(crin @  5.2.2009,  13:19 Найти цитируемый пост)
отступ может быть и 4 и 8


а что в этом плохого?

Автор: Carnifex 5.2.2009, 14:08
Хм, ну а я делаю так
Код

void function(->type1-->param1,
--->--->--->--->type2-->param2)
{
--->
--->return;
}

хотя щас подумал. будет смотреться жутко и при табе в 2 ширины и при табе в 6.

Автор: crin 5.2.2009, 14:11
Carnifex, и что, будет одинаково и для 4, и для 8 пробелов вместо таба?

Добавлено через 1 минуту и 11 секунд
Цитата(Carnifex @  5.2.2009,  14:08 Найти цитируемый пост)
type1-->param1


Цитата(Carnifex @  5.2.2009,  14:08 Найти цитируемый пост)
type1-->param1

круто, а если таб 8 пробелов то просто шикарно

Автор: bars80080 5.2.2009, 14:21
Цитата(Lazin @  5.2.2009,  10:54 Найти цитируемый пост)
а теперь поменяем размер таба: 

а зачем менять размер таба? вы его пять раз на дню меняете? я однажды подогнал его под свой взгляд и всё.


Автор: crin 5.2.2009, 14:23
Цитата(bars80080 @  5.2.2009,  14:21 Найти цитируемый пост)
а зачем менять размер таба? 

а если твой код кто-то другой будет читать
а ему нравится 2 пробела(и среда у него настроена на 2 пробела), что тогда

Автор: Lazin 5.2.2009, 14:34
Цитата(bars80080 @  5.2.2009,  14:21 Найти цитируемый пост)
а зачем менять размер таба? вы его пять раз на дню меняете? я однажды подогнал его под свой взгляд и всё.

а взгляд у каждого свой

Автор: Любитель 5.2.2009, 14:42
Цитата(bars80080 @  5.2.2009,  14:21 Найти цитируемый пост)
я однажды подогнал его под свой взгляд и всё.

Ну ты ведь не один на свете? ;)

Автор: LSD 5.2.2009, 14:51
Цитата(crin @  5.2.2009,  12:54 Найти цитируемый пост)
а почему не так? 

Ну хотя бы потому, что ни одна IDE не умеет так форматировать smile

Автор: bars80080 5.2.2009, 14:52
Цитата(crin @  5.2.2009,  13:23 Найти цитируемый пост)
а если твой код кто-то другой будет читать
а ему нравится 2 пробела(и среда у него настроена на 2 пробела), что тогда 

дык, его проблемы! я ж не пишу гневные эпиграммы в адрес тех у кого стырил код

Цитата(Lazin @  5.2.2009,  13:34 Найти цитируемый пост)
а взгляд у каждого свой 

через свой взгляд я смотрю один. а вы?

Цитата(Любитель @  5.2.2009,  13:42 Найти цитируемый пост)
Ну ты ведь не один на свете?

ну что ещё можно сказать? на Свете не бывал ещё. буду, узнаю, один ли я там

Автор: LSD 5.2.2009, 15:08
Цитата(bars80080 @  5.2.2009,  14:52 Найти цитируемый пост)
дык, его проблемы! я ж не пишу гневные эпиграммы в адрес тех у кого стырил код

Работать с тобой в команде - одно удовольствие, наверное smile 

Автор: bars80080 5.2.2009, 19:05
Цитата(LSD @  5.2.2009,  14:08 Найти цитируемый пост)
Работать с тобой в команде - одно удовольствие, наверное 

 smile я один себе голова

а что нет корпоративных правил? условились бы о едином стандарте и всё

Автор: JackYF 5.2.2009, 19:25
Цитата(LSD @  2.2.2009,  13:12 Найти цитируемый пост)
Например сделать такое выравнивание

А сделать другое - можно.

Автор: LSD 5.2.2009, 20:17
Цитата(JackYF @  5.2.2009,  19:25 Найти цитируемый пост)
А сделать другое - можно. 

1. Другое это какое?
2. Любое форматирование с табами, реализуется пробелами. Но не любое форматирование которое реализуется пробелами - реализуемо табами  smile 

Вот ещё парочка:
Код

public final static int BIT      =  -7;
public final static int TINYINT  =  -6;
public final static int SMALLINT =   5;
public final static int INTEGER  =   4;
public final static int BIGINT   =  -5;

Код

where epi.eps_report_id    = epa.eps_report_id
  and epa.eps_report_dir   = 'trnut'
  and epa.eps_account_code = 'xwk7'
  and epa.eps_report_name  = 'DailyMTM.pdf'


Фтопку табы! Чай не в ворде пишем smile

Добавлено через 5 минут и 17 секунд
Цитата(bars80080 @  5.2.2009,  19:05 Найти цитируемый пост)
а что нет корпоративных правил? условились бы о едином стандарте и всё 

Есть, но похоливарить-то надо smile 

Автор: December 6.2.2009, 12:08
У нас в конторе стандарт - вместо таба автоматически вставляются пробелы, один таб равен двум пробелам. И все равно есть проблемы - не все правильно настравивают свои редакторы, приходится работать с чужим или старым кодом etc.

Автор: bems 6.2.2009, 18:49
кнопка таб, вставляющая символы пробела плюс опция "smart tabs" подгоняющая количество пробелов по строчке выше

Автор: crin 9.2.2009, 17:19
Цитата(December @  6.2.2009,  12:08 Найти цитируемый пост)
У нас в конторе стандарт - вместо таба автоматически вставляются пробелы, один таб равен двум пробелам. И все равно есть проблемы - не все правильно настравивают свои редакторы, приходится работать с чужим или старым кодом etc. 

а если были бы табы, то проблем не было

Добавлено через 6 минут и 3 секунды
Цитата(LSD @  5.2.2009,  20:17 Найти цитируемый пост)
Код

where epi.eps_report_id    = epa.eps_report_id
  and epa.eps_report_dir   = 'trnut'
  and epa.eps_account_code = 'xwk7'
  and epa.eps_report_name  = 'DailyMTM.pdf'

легко

Автор: LSD 9.2.2009, 17:31
Цитата(crin @  9.2.2009,  17:19 Найти цитируемый пост)
легко 

Ну так изобразите, маэстро smile 

Автор: December 9.2.2009, 17:56
Приведу ещё пример, который показывает, почему вместо табов должны сразу вставляться пробелы. Возьмём список... участников корпоратива, пусть они голосуют за дату проведения мероприятия. 

Вот что получается, когда используются только пробелы:
Код

1. Иванов Иван....................21
2. Сидоров Сидор..................19
3. Перекиньногучереззабор Пётр....20
4. Чья Чьё........................19


Пусть список писал человек, у которого tab=8.
Вот так у него физически выглядит список:
Код

1. Иванов Иван->      ->      ....21
2. Сидоров Сидор->      ->      ..19
3. Перекиньногучереззабор Пётр....20
4. Чья Чьё->      ->      ->......19


Вот так он в итоге отображается у человека, который имеет tab=4:
Код

1. Иванов Иван            21
2. Сидоров Сидор          19
3. Перекиньногучереззабор Пётр    20
4. Чья Чьё            19


И это всего лишь один из примеров из жизни.

Автор: bars80080 9.2.2009, 18:04
даже не знаю что сказать. это где такое вообще используется?

Автор: Lazin 9.2.2009, 22:22
Цитата(bars80080 @  9.2.2009,  18:04 Найти цитируемый пост)
даже не знаю что сказать. это где такое вообще используется?

в текстовых редакторах
К.О.

Автор: bars80080 9.2.2009, 22:39
бррр, каких таких текстовых редакторах?
айм, сорри, но мне в голову пришла только картинка проFARенного редактора. да ещё что-то мутное на Basicе крутится со школьных компьютеров Yamaha 1982

Автор: Lazin 10.2.2009, 06:26
какие мы современные =)
я так иногда код комментирую
Код

/**  Класс блаблабла
 *   блаблабла  
 *   блаблабла
 */

В принципе, это то-же самое что и в предидущем варианте, только вместо Иванова Ивана символ *, а вместо цифры 21 - текст комментария

Автор: picc 16.2.2009, 12:12
Цитата(LSD @  5.2.2009,  20:17 Найти цитируемый пост)
Вот ещё парочка:

а в каком редакторе можно этот код
Код

int a = 1;
bool is = true'
double = 2.01;

отфарматировать так
Код

int     a   =  1;
bool    is  =  true'
double  b   =  2.01;

или так
Код

int a     =  1;
bool is   =  true'
double b  =  2.01;

Автор: LSD 16.2.2009, 17:42
Цитата(picc @  16.2.2009,  12:12 Найти цитируемый пост)
а в каком редакторе можно этот код

В notepad можно отформатировать так как ты указал, и ещё десятком разных способов smile 

Автор: LSD 14.4.2015, 17:55
Тут http://stackoverflow.com/research/developer-survey-2015#tech-tabsspaces подкинул интересную статистику. С одной стороны, http://lurkmore.to/95%25 предпочитает табы, с другой стороны опытные разработчики предпочитают пробелы.

Добавлено через 49 секунд
Цитата(picc @  16.2.2009,  13:12 Найти цитируемый пост)
а в каком редакторе можно этот код

Кстати IDEA научилась так форматировать.

Автор: CompWorm 15.4.2015, 00:52
дааа, вот так суприз! я тоже всю жизнь юзал табы и писал код, так чтоб длинна таба рояли не играла, а оказывается это всё ламерство)))
ИМХО, если (мой) код требует дополнительного отступа к табу и вынуждает всем своим видом перейти к гибким пробелам, то с (моим) кодом что-то не так, он стал громоздким и уродливым, его пора разрядить на более простые конструкции.
Конечно это не догма, и некоторые языки для пущей изящности требуют хитрые отступы, но не те, с которыми дело имел я, да и здесь такого примера пока никто не привёл.

Автор: LSD 16.6.2017, 15:53
Цитата
Stack Overflow 2017: разработчики, которые используют пробелы, зарабатывают больше

 smile 

Автор: irinazanuda 16.6.2017, 16:18
Tab слишком тяжеловестно, эдак, по-купечески, да ещ и заранее продуманно.. толи лёгкая поступь пробелов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)