LINUX.ORG.RU

80 символов


0

0

Ещё со времён turbo pascal'я у меня привычка - делать одну строку кода максимум в 80 символов длинной. Имеет ли это смысл сейчас? Кто-нибудь ещё этим заморачивается или нет? А то с такими монтрами как directx или gtk+ с именами функций 30+ символов это довольно сложно и в результате получается нечитабельный ужосЪ =).

Кто что думает?

Deleted

У меня вим настроен на 85 символов - 5 символов на номер строки, остальное на код.

Лично я ориентируюсь на coding style описаный Линусом в ядре в разделе Documentation/CodingStyle. Он там говорит о

" The limit on the length of lines is 80 columns and this is a strongly preferred limit.

Statements longer than 80 columns will be broken into sensible chunks. Descendants are always substantially shorter than the parent and are placed substantially to the right. The same applies to function headers with a long argument list. Long strings are as well broken into shorter strings. The only exception to this is where exceeding 80 columns significantly increases readability and does not hide information. "

Ну ещё много разного пишет. Его рекомендации относятся, главным образом, для тех, кто пишет на C (это я :)) так что я ими и пользуюсь. Так что это по ситуации смотреть надо.

А вот ещё вопрос - я использую для отступа таб в 8 символов (как Линус завещал), но где-то слышал, что тру-девелоперы пользуются пробелами (видимо, чтобы при разных настройках \t отображался одинаковой ширины). Кто какие отступы использует и какие видит в этом плюсы и минусы? :)

lv ★★
()

Я ограничиваю строку 100 символами. Главное, чтобы за границу экрана не выходило, а то читать будет гораздо сложнее.

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

> А вот ещё вопрос - я использую для отступа таб в 8 символов (как Линус завещал), но где-то слышал, что тру-девелоперы пользуются пробелами

В моей конторе, например, это обязательное требование coding style-а.

> (видимо, чтобы при разных настройках \t отображался одинаковой ширины).

Именно с этой целью.

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

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

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

> А вот ещё вопрос - я использую для отступа таб в 8 символов (как Линус завещал), но где-то слышал, что тру-девелоперы пользуются пробелами

С недавних пор тоже вместо табов пробелы. Ибо прочитал PEP-8 =)

teferiincub
()

это имеет смысл всегда. а тех, кто пользует табы для отступов и пишет больше 80-ти символов -- расстрелять.

Rastafarra ★★★★
()

Если есть привычка распечатывать листинги или в команде есть любители 80x25 терминалов, то имеет смысл.

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

> Кто какие отступы использует и какие видит в этом плюсы и минусы? :) 

4 пробела. Можно использовать табы, но тогда надо аккуратным миксом пробелов и табов форматировать отступы:
<tab>void foo(int bla,
<tab>_________char *z) {
<tab><tab>int x = foo(1, "")
<tab><tab>______+ foo(2, "123");
...

А иначе у человека с другой длиной таба разъедется текст программы.

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

> не знаю, мне по четырём проще отслеживать отступы.

на самом деле это зависит от языка :)

[code]
type t1 = { f1 : string
          ; f2 : int
          }
;;

type _t_2_ = { _f_1  : string
             ; _f_2_ : int
             }
;;

type t = T1 of t1 | T2 of _t_2_

let v1 = { f1 = "tratata"
         ; f2 = 18
         }
;;

let f v =
  match v with
      T1 t -> print_endline t.f1
    | T2 t -> print_endline t._f_1
;;

let _ = f (T1 v1)
;;
[/code]

муть? согласен :)
но отступы _везде_ разные и однозначно количество пробелов никак выставить.
размер табов тем более...

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

так я вроде выше отписался :)

80 в строке и пробелы для отступов наше все :)

[off] мне кажется, или звезды в самом деле пропали? их отменили? не то чтобы очень хочется, просто непривычно как-то... [/off]

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

Я тоже использую tab = 4 пробела: так мне кажется удобнее.
Что касается пробелов, то отступ в 1 пробел маловат, поэтому часто ставят их несколько, а в этом случае проще настроить ширину таб

KUser
()

Смотря какой язык программирования.

Вот Линус например пишет о C.

В cpp разбивай как хочешь, всё равно ничего толкового не выйдет.

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

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

Legioner ★★★★★
()

Всем сторонники пробелов вместо табов: вы наверно и документы в текстовых процессорах пробелами форматируете? Использование табов удобнее для навигации по исходному тексту, а если ещё, не дай бох, сотрёте лишний пробельчик и стоит в редакторе автовыравнивание то все последующие строки поплывут к едрене-фене. А все эти соглашения по стилю оформления кода либо изыскания тупых теоретиков либо навязывание привычек одного чела другим. Хорошо только для тех, кто оценивает труд программиста мегабайтами исходных текстов.

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

Я всё-таки остаюсь при мнении, что табы лучше. Если у меня текст форматирован табами, то для обнообразного отображения нужно просто настроить размер табуляции. Если используются пробелы, то тут один может 4 пробела ставить, другой 2, третий 8... проблем тут гораздо больше будет.

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

> Если используются пробелы, то тут один может 4 пробела ставить, другой 2, третий 8

Другой и третий перепишут на 4 пробела и всё :)

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

> Другой и третий перепишут на 4 пробела и всё :)

Ню-ню :))

А может лучше всё-таки табами. С 8 символами отступа? Тогда

1. Каждый легко сможет для себя настроить ширину отступа

2. Не будет проблем с переносом длинных строк (табы шире 8 никто не использует) Если настроили таб на ширину 4, то строка всё равно влезет

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

> вы наверно и документы в текстовых процессорах пробелами форматируете?

хо. мило :)

вообще-то там есть спец-средства типа стилей и прочего. TeX -- просто отличный пример того, как надо делать форматирование текста.

мимо кассы.

> если ещё, не дай бох, сотрёте лишний пробельчик и стоит в редакторе автовыравнивание то все последующие строки поплывут к едрене-фене.

всякой приличный редактор умеет выравнивать блоками, если «вдруг» сотрем один пробельчик ;)

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

> Я всё-таки остаюсь при мнении, что табы лучше.

не работает для моего примера --> не работает для общего случая.

> Если используются пробелы, то тут один может 4 пробела ставить, другой 2, третий 8... проблем тут гораздо больше будет.

для этого есть code reference.

Rastafarra ★★★★
()

Я думаю что 80 символов на строку сегодня - дело вкуса и обстоятельств. Насчет "табы версус пробелы" - я предпочитаю табы.

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

> не работает для моего примера --> не работает для общего случая.

Ты, конечно, извини меня за моё ИМХО и всё такое, но твой пример - это пример УЖАСНОГО стиля. Ибо выравнивание, зависящее от длины имени переменной очень сложно поддерживать и смотриться это убого и коряво.

> для этого есть code reference.

Это когда все вместе дружно прэкт стартуют... а вот когда берётся чужой код и начинает затачиваться под свою задачу (что тоже часто бывает), то тут с табами проще.

lv ★★
()

Хорошая у Вас привычка.

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

> Ты, конечно, извини меня за моё ИМХО и всё такое, но твой пример - это пример УЖАСНОГО стиля

это нормальный стиль.
можно даже дополнить:

[code]
let f v =
  match v with
      T1 t ->
        if t.f2 > 9
        then ( print_endline "line 1"
             ; print_endline "line 2"
             )
        else ( print_endline "line 1"
             ; print_endline "line 2"
             );
        print_endline t.f1
    | T2 t -> print_endline t._f_1
;;

let _ = f (T1 v1)
;;
[/code]

как предлагаешь табами такое ровнять?
как ровнять match конструкцию?

а ведь язык сам просится так писАться :)
ну в самом деле, не сями же едины... ;)

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

> а вот когда берётся чужой код и начинает затачиваться под свою задачу (что тоже часто бывает)

то выясняется что табы легко любым приличным рекактором превращаются в отступы, которые описаны в нашем code reference.

более того: отступы -- это _наиболее незначащее_, что может быть «не так» с чужим кодом ;)

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

> как ровнять match конструкцию?

А что с ней не так - по-моему отлично ровняется табами ;) Как и всё остальное - главное сноровка... но если редактор выполняет вменяемый и удобный autoindent - то может оно и лишнее, конечно :)

>> а вот когда берётся чужой код и начинает затачиваться под свою задачу (что тоже часто бывает)

> то выясняется что табы легко любым приличным рекактором превращаются в отступы, которые описаны в нашем code reference.

Вот-вот - а будь там пробелы, не совпадающие с нашим code reference, - резь в глазах обеспечена.

> более того: отступы -- это _наиболее незначащее_, что может быть «не так» с чужим кодом ;)

Это, конечно же так, :) только ведь разговор об отступах :)

lv ★★
()

set nowrap
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent

это заливается всем кто учавствуют в проекте и никаких проблем. Называется этот метод coding standarts.

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

>> Лично я ориентируюсь на coding style описаный Линусом в ядре в разделе Documentation/CodingStyle.

Интересный документик... А может кто подскажет ссылку на какой-нибудь стандарт форматирования C++-кода, используемый в каком-нибудь крупном проекте (или просто общие рекомендации)?

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

> с табами слишком много возни для корректного форматирования кода (хотя, с другой стороны, алгоритм примитивный и в любом расширяемом syntax-aware редакторе кода легко реализуем).

В Eclipse-CDT (подозреваю, что и для других языков тоже) это все реализовано: можно настроить отступы пробелами, табами и "умным" миксом табы+пробелы; работает автоформатирование.

Тем не менее, отступы пробелами все равно рулят, т.к. в разных редакторах они смотрятся одинаково :)

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

> А может кто подскажет ссылку на какой-нибудь стандарт форматирования C++-кода, используемый в каком-нибудь крупном проекте (или просто общие рекомендации)?

в большинстве корпораций принято использовать пробелы, не табы.

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

>Если используются пробелы, то тут один может 4 пробела ставить, другой 2, третий 8...

... а потом прийдет тим лидер и раздаст последним двум пилюлей

V_L_A_D ★★
()

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

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

> а потом прийдет тим лидер и раздаст последним двум пилюлей

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

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

> В моей конторе, например, это обязательное требование coding style-а.

Ага, в моей тоже. Тем не менее в коде постояно попадаются строки, которые не влезают в 19" монитор :)

shumer
()

Я до сих пор иногда аппаратным терминалом пользуюсь. Так что ограничение в 80 символов рулило и рулить будет.

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

> Я до сих пор иногда аппаратным терминалом пользуюсь. Так что ограничение в 80 символов рулило и рулить будет.

вообще-то 80 это уже ересь нового времени. Реально ограничение 64.

В Корвете, например, была символьная экранная память шириной 64.

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

> вообще-то 80 это уже ересь нового времени. Реально ограничение 64.

Не гони. Даже на VT50 было 80 символов (и 11 строк, хе хе)

> В Корвете, например, была символьная экранная память шириной 64.

Кого колышат эти совковые недоподелки? Стандарт всегда был 80 символов.

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

>Я до сих пор иногда аппаратным терминалом пользуюсь. Так что ограничение в 80 символов рулило и рулить будет.

А у меня 20-тидюймовый монитор, но мне удобно держать перед глазами одновременно два файла: слева -- реализацию, справа -- хедер. Поэтому для меня 80 символов будет рулить еще долго:)

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

>Я всё-таки остаюсь при мнении, что табы лучше. Если у меня текст форматирован табами, то для обнообразного отображения нужно просто настроить размер табуляции. Если используются пробелы, то тут один может 4 пробела ставить, другой 2, третий 8... проблем тут гораздо больше будет.

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

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

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

s/отличии/отличие
man грамота

уже много раз приводили примеры вида:

  function(argument1,
           argument2,
           argument3);

которые не работают с табами.

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

кто ж виноват, что ты живешь в трущобах..

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

>уже много раз приводили примеры вида...

по сим примерам явно не вкурсе... на таку граблю пока не наступал...

>кто ж виноват, что ты живешь в трущобах.. есть "особо одаренный" код на работе...

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

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