LINUX.ORG.RU

TABs VS Spaces


0

0

Что предпочтетельно использовать? Скажем есть строчка кода, за которой необходим однострочный комментарий, начинающийся с //. Что лучше сделать? 1 таб, 2 таба или n пробелов? n=8?

И еще этот вопрос для пользователей emacs в частности. Табы(пока я их использую) ставлю через C+q TAB. Прочитал и задумался -> http://www.emacswiki.org/cgi-bin/wiki/TabsAreEvil

Как делаете вы?


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

<tab><tab>$expr = reduce_expr($expr,
<tab><tab>                    $complete_apriori,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

А теперь скажите, в каком редакторе можно сделать такую конструкцию в
одно нажатие?

eugine_kosenko ★★★
()
Ответ на: комментарий от Die-Hard

> ИМХО за табы надо приговаривать к 10 годам расстрела вонючими
> пулями... Вообще, это ж надо было додуматься -- допустить в сырцы
> визуально неотличимые наборы символов!
>
> Die-Hard (*) (30.04.2008 0:36:42)

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

Onanim
()
Ответ на: комментарий от dilmah

> Исключение подтверждает правило..

Еще один заблуждающийся. Повторяете фигню вслед за остальным стадом. Неужели вы не понимаете, какой чушью звучит это выражение в такой форме?

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

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

> Ну тогда что ли объясните, _как_ исключение подтверждает правило.

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

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

Все сейчас употребляют слово "цифра" в смысле 0-9, а некоторые даже в смысле любых чисел. Но ведь исконный смысл этого слова -- "ноль" (все ненули записывались буквами и только ноль цифрой). (Слово zero однокоренное со словом "цифра").

Или слово "легенда". В стандартном употреблении значение этого слова мигрировало и значит примерно то же что и "миф". Но если проанализировать его корень, то легенда по определению может означать только _записанную_ историю.

Или слово "пример". Его исконное значение "первый", то есть первый вводный урок, первый вводный образец. Но в стандартном употреблении смысл мигрировал и "пример" теперь может означать любой образец.

Если начать во всех случаях анализировать структуру слов и их изначальный смысл, то с таким шизофреником будет сложно общаться. Это не значит, что это не нужно делать, но это нужно делать в меру.

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

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

Спасибо, что не поддались на провокацию. Ответ принимается. Язык наполнен заимствованиями, но мало идиом, которые бы исказились до полной логической бессмысленности и повсеместно использовались для подтверждения собственной правоты.

anonymous
()

Только пробелы. В code convension написано 4 пробела, значит 4 пробела. И меня не волнует, что кому-то удобнее отступы шириной в 3, 5, 6,.. etc.

А начальник вообще не будет смотреть на код, если форматирование хреновое.

Ian ★★
()
Ответ на: комментарий от Die-Hard

Re^2: TABs VS Spaces

> ИМХО за табы надо приговаривать к 10 годам расстрела вонючими пулями...

> Вообще, это ж надо было додуматься -- допустить в сырцы визуально неотличимые наборы символов!

> Рано или поздно ты сам или твой коллега случайно повставляет вместо табов пробелы, и все расползется. Или "умный" редактор заменит табы пробелами по своему усмотрению. Или табы будут настроены нетривиально. Или еще что -- словом, я, как натерпевшийся от табов (мой "старший" коллега, с которым мне приходится разделять код уже много лет, фанат табов) категорически их отрицаю.

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

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

Re^2: TABs VS Spaces

> Только пробелы. В code convension написано 4 пробела, значит 4 пробела. И меня не волнует, что кому-то удобнее отступы шириной в 3, 5, 6,.. etc.

> А начальник вообще не будет смотреть на код, если форматирование хреновое.

логичный начальник

Goganchic ★★
()
Ответ на: Re^2: TABs VS Spaces от Goganchic

> есть некоторые варианты, где без табов нельзя обойтись, например Makefile-ы

Во! Пример с мейком поучителен -- это ж надо было _так_...!

Когда ко мне обращается "чайник" с проблемами с мэйкфайлом, я обычно даже не слушая говорю про то, что нельзя в мейкфайле мышкой строки копировать. Всегда помогает, еще ни разу не ошибся! :-)

Вообще, единственный (разумный) аргумент сторонников табов из прозвучавших -- настраиваемая ширина отступа -- не выдерживает ИМХО никакой критики, ибо:

1. Даже в Це (не говоря уж о других языках) часто приходится ровнять отступы по нетривиальному тексту ( см. dilmah (29.04.2008 17:21:17) )

2. Если я использую 3 пробела, то при пятикратной, скажем, вложенности (совершенно обычное в Це явление) мне останется 65 символов для кода (Це -- не Фортран;) ), что не так уж и много, и если у другого отступ будет настроен на 8, мой код у него на экране просто не поместится.

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

/usr/src/linux/Documentation/CodingStyle

Now, some people will claim that having 8-character indentations makes the code move too far to the right, and makes it hard to read on a 80-character terminal screen. The answer to that is that if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.

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

> 1. Даже в Це (не говоря уж о других языках) часто приходится ровнять отступы по нетривиальному тексту ( см. dilmah (29.04.2008 17:21:17) ) 

Эта проблема решаема, как уже приводили в треде:

void foo(int param1, int param2,
_________int param3)
{
<tab>struct foo_t *foo = foo_create(param1, param2,
<tab>_______________________________param3);
}

Другое дело, что для сопровождения такого кода придётся визуализировать табы и пробелы, что неудобно.

> 2. Если я использую 3 пробела, то при пятикратной, скажем, вложенности (совершенно обычное в Це явление) мне останется 65 символов для кода (Це -- не Фортран;) ),
> что не так уж и много, и если у другого отступ будет настроен на 8, мой код у него на экране просто не поместится. 

Вот этого я не понимаю. Мне никогда не хватало 80-ти символов и практически всегда у меня на экране помещалось порядка 160 символов
в ширину. Буду писать с 80-символьной шириной, только если кодстайл будет такой.

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

Код в двух одновременно открытых файлах в вертикальном сплите пишется существенно быстрее чем в одном. На разрешении 1280x1024 влезает ~75 символов в ширину (courier new, 12), на 1400x1050 чуть больше 80. На 1680x1050 чуть больше 80 + навигационная панель проекта.

Если писать 160 символов в ширину, то либо появится вертикальный скролбар либо одна строка будет отображаться как две (в зависимости от настроек редактора), что очень неудобно.

У нас в кодстайле прописано 80 символов в ширину.

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

> ... if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.

Очень сильное и неаргументированное утверждение. Я с ним абсолютно не согласен.

Die-Hard ★★★★★
()
Ответ на: комментарий от Legioner

> Эта проблема решаема, как уже приводили в треде: ... Другое дело, что для сопровождения такого кода придётся визуализировать табы и пробелы...

Этот подход уже был тут прокомментирован -- можно, я воздержусь от нецензурных выражений? :-)

> ...практически всегда у меня на экране помещалось порядка 160 символов

Ну, если охота глаза ломать...

А как это дело на A4/Letter распечатать? Или тоже шрифтами в 6пт, а потом с лупой читать?

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

По мне так чушь написана. Он конечно прав, что код должен быть как можно проще, но все же в крайности тоже не следует впадать.

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

P.S. Пусть он это скажет ребятам. которые реализуют сложного рода алгоритмы. В графике или еще где.

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

>У меня в эклипсе таб равен четырём пробелам, в консоли восьми, в виме трём. Невозможно будет набирать программу так, чтобы она идентично выглядела во всех трёх местах.

"У меня в Эклипсе шрифт DejaVu Sans Mono, в консоли Terminus, а в виме Comic Sans MS. Невозможно будет набирать программу так, чтобы она идентично выглядела во всех трёх местах." %)

Короче ССЗБ.

Ставя табы, программист позволяет всем остальным смотреть код так, как ИМ удобно (выставив соответствующую ширину таба). Ставя пробелы, программист заставляет всех смотреть так, как удобно ЕМУ, плевав на остальных.

А отступы пробелами по скобке ИМХО вообще клиника. Это как в Ворде абзацы пробелами выравнивать или текст пробелами центрировать.... =\

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

Естественно, когда речь заходит о "корпоративном стандарте", то все личные предпочтения тут же идут найух вне зависимости от того, насколько они с этим стандартом коррелируют. Сказано 4 пробела --- делаем 4, сказано 8 --- делаем 8, сказано табы --- делаем табы.

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

> Код в двух одновременно открытых файлах в вертикальном сплите пишется существенно быстрее чем в одном.

Гм, очень редко так делаю. Может зря. Надо будет попробовать. Хотя плохо представляю, чего там смотреть в двух окошках.

Legioner ★★★★★
()
Ответ на: комментарий от Die-Hard

> А как это дело на A4/Letter распечатать? Или тоже шрифтами в 6пт, а потом с лупой читать?

Можно повернуть на 90°. Хотя я, опять же, плохо представляю, зачем распечатывать исходники.

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

> Можно повернуть на 90°

ИМХО это не очень удобно: мало строк помещается.

> ...плохо представляю, зачем распечатывать исходники.

1. Читать с бумаги приятнее, чем с экрана. Если надо найти ошибку, или просто над кодом "помедитировать", помогает.

2. Публикации.

3. Документация.

Die-Hard ★★★★★
()
Ответ на: комментарий от Legioner

> Хотя я, опять же, плохо представляю, зачем распечатывать исходники.

на олном из моих мест работы каждое изменение кода оформлялось в виде pdf документа (ну и этот код туда вставлялся).

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