Ограничение в 80 символов по-прежнему актуально во времена широкоформатных мониторов? [закрыто]

56

на широкоэкранном мониторе можно легко увидеть более 80 символов одновременно, без полос прокрутки. даже Линус Торвальдс видит ограничение в 80 символов как устаревшее .

Итак, действительно ли ограничение в 80 символов по-прежнему актуально во времена широкоэкранных мониторов?

lesmana
источник
1
Есть очень веская причина, чтобы сократить количество строк, например, в Eclipse. Это позволяет вам печатать ваши программы на обычном принтере читаемым шрифтом без переноса строк.
В каком контексте? Если вы спрашиваете в конкретном контексте программирования, я бы проголосовал, чтобы открыть снова.
Николь
Перенос слов в Visual Studio нарушен, поэтому большинство пользователей отключили его. Вместо этого они ставят разрывы строк вручную. Это выглядит ужасно для любого с другой шириной экрана. visualstudio.uservoice.com/forums/121579-visual-studio/…
полковник Паник

Ответы:

28

Есть несколько причин, по-прежнему придерживающихся ограничения в 80 символов (или, что ограничение в 74 символа еще лучше; это позволяет коду оставаться менее 80 столбцов, даже если добавлены маркеры diff и цитирование по электронной почте, если вы просматриваете код на списки рассылки).

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

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

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

И, наконец, если у вас очень длинные строки, то это, как правило, означает, что у вас очень сложные строки, глубокая независимость или что у вас очень длинные идентификаторы. Все это может быть проблемой. Сложные строки, вероятно, делают слишком много; если вы можете разбить его на несколько простых строк, вы, вероятно, должны. Глубокий отступ означает, что вы, вероятно, вкладываете слишком много циклов и условных выражений, что может запутать ваш поток кода; учитывая рефакторинг на несколько функций. И если ваши идентификаторы слишком длинные, это может затруднить чтение вашего кода. Люди обычно распознают слова как отдельные единицы; они не читают каждый символ один за другим, но смотрят на общую форму слова. Длинные идентификаторы сложнее отличить таким образом, и, как правило, если они такие длинные, они содержат избыточную или повторяющуюся информацию.

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

Брайан Кэмпбелл
источник
3
Согласовано. Тем не менее, длинные идентификаторы иногда поощряются (с помощью руководящих принципов кодирования, таких как «используйте значимые имена» или «избегайте загадочных сокращений») или необходимы (например, std::vector<...>::const_iterator), хотя в последнем случае вещи обычно могут быть смягчены с помощью typedefs.
Musiphil
Великие причины. Я не уверен, что точная длина строки имеет значение, пока ваша команда (или список рассылки?) Соглашается с этим. Лично я согласен с предложением дяди Боба никогда не превышать 120 символов.
Аллан
1
@musiphil Да, именно поэтому я включил последний абзац. Я столкнулся со строками в C ++, где я просто не смог уместить имя класса, имя метода и тип возвращаемого значения в одну строку из 80 столбцов при объявлении метода. Вместо того, чтобы делать действительно странный перенос строки, лучше просто нарушить правило 80 столбцов (или 100 столбцов) для этой одной строки.
Брайан Кэмпбелл
46

Если мои строки будут содержать не более 100 символов, у меня может быть два окна редактора рядом на широкоэкранном мониторе. Очень полезно иметь и файл заголовка класса, и реализацию одновременно видимыми, или иметь код с одной стороны, который вызывает код с другой. И, если я сделаю строки короткими, мне не понадобится горизонтальная полоса прокрутки в окнах редактора, которая дает мне больше вертикального пространства.

80 символов могут быть устаревшими, но есть смысл держать вещи в разумных пределах.

Найл С.
источник
1
+1, я часто открываю несколько исходных файлов в Vim или других редакторах. С достаточно маленьким шрифтом и достаточно узким правым полем я могу очень быстро получить хороший обзор проекта и даже открыть много документации.
Greyfade
4
80 символов по-прежнему актуальны, потому что многие люди по умолчанию имеют свои терминалы и редакторы такого широкого диапазона; таким образом, если вы ограничите себя до 80, вы будете дружелюбны к этим людям, вместо того, чтобы требовать, чтобы они переставили все свои окна или имели дело с переносом строк или горизонтальной прокруткой.
Брайан Кэмпбелл
1
80 символов по-прежнему разумно; Длительность, превышающая это, поощряет чрезмерно вложенный код (вместо рефакторинга!), а наличие множества окон рядом друг с другом исключительно полезно. Добавление другого монитора просто увеличивает количество окон, которые вы можете видеть одновременно!
Donal Fellows
1
80 дружит с VMS возможно. Простите за мое мышление нового века, но мы должны расширить предел там, где это возможно, и сохранить его там, где это необходимо ..
Росс
29

Я не думаю, что монитор имеет какое-либо отношение к нему - по крайней мере, больше.

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

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

Я лично ненавижу такие вещи:

ret = my_function(parameter1, \
                  parameter2, \
                  parameter3, parameter4);

А не просто:

ret = my_function(parameter1, parameter2, parameter3, parameter4);
Сезар Канасса
источник
5
Конечно, если строка 3 в первом примере не слишком длинная, строка 2 может быть объединена в строку 1, что делает ее более удобочитаемой. (Какой язык требует экранированных строк в скобках?)
1
Ааа, это просто какой-то псевдокод, который я написал. Но я думаю, что С требует этого.
Сезар Канасса
4
Только в многострочных макроопределениях, которые (или должны быть) редки. Это существенно влияет на выбор максимальной длины строки (поддержание таких обратных косых черт не очень интересно), поэтому мне любопытно, почему вы это показываете. Кажется, соломенный человек ?
2
Если бы я столкнулся с проблемой разрыва строки в вызове функции, я бы поместил каждый параметр в отдельную строку с отступом на один уровень.
StarBlue
20

Для кодирования?

Конечно да. Нормальный человек не может читать слишком широко. С несколькими колонками вы меньше двигаете глазами, лучше фокусируетесь и задерживаете усталость. Это минимальный выигрыш, но важный.

Maniero
источник
3
Хотя я чувствую, что код сильно отличается от прозы, утомительно читать код, который периодически (т. Е. Проза обычно была бы гораздо более последовательной) растягивал строки до 120+ столбцов.
6

Да, есть причины ограничивать длину строки кода:

  1. Хотя наши экраны стали шире, иногда вам нужно распечатать код. Если только по этой причине .
  2. Diff-зрители часто отображают линии с вертикальным разделением - это становится сложнее, если линии настолько длинные, насколько позволяет широкий экран.

Сказав это, 80 это слишком мало. Но, тем не менее, некоторые ограничения, вероятно, хорошая идея в качестве принципа дизайна.

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

Ассаф Лави
источник
5

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

jerwood
источник
3

Вероятно, не имеет смысла точно выбирать ограничение в 80 символов; что изменится, если предел, например, 85?

Это правда, что мониторы, используемые в настоящее время, имеют более высокое разрешение, но в текстовом редакторе / IDE не все пространство берется из текстового представления; в редакторе, который я использую, показывает слева список файлов, включенных в проект.

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

kiamlaluno
источник
5
80 символов было жестким ограничением количества столбцов на перфокарте!
ChrisF
5
Неважно, что это за стандарт, но если все работают по одному и тому же стандарту, это облегчает жизнь.
Скиллдрик
2

Это действительно зависит от среды разработки.

Например, в большой корпорации с тысячами разработчиков, вероятно, есть сотни людей, которым на протяжении всей жизни продукта приходится смотреть на некоторую часть его кода. При таком количестве людей обязательно найдется несколько человек, которые по какой-либо причине (старое оборудование, нетбуки и т. Д.) Работают с разрешением 800x600 или меньше. Есть некоторая ценность для размещения их.

В моей компании из 25 человек, я говорю, винт это. Мы все используем двойные современные мониторы с максимальным разрешением - 120-140 или около того - это неофициальное руководство.

Fishtoaster
источник
2

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

Я считаю, что читабельность кода превосходит все остальные проблемы. И с 96 символами в строке код может быть сделан намного более читабельным, чем с 80.

Я не покупаю аргумент, что большинство людей устанавливают свои терминалы шириной 80 символов, и принтеры не должны переносить строки длиннее 80 символов. Это не жесткий предел, как это было в (далеком) прошлом. Вы можете легко установить терминал и ширину принтера до 100 символов.

alexeiz
источник
1

Нет, это больше не актуально:

  • Большинство шрифтов, используемых в приложениях и в Интернете, в любом случае не имеют фиксированной ширины. Другими словами, 80 символов! = 80 символов.
  • Как вы сказали, ширина экрана изменилась - 80 символов не является разумной границей.

80 символов были действительно ориентиром для шрифтов фиксированной ширины в среде консоли.

Конечно, если вы все еще используете шрифт фиксированной ширины в консольной среде ... тогда, конечно, разумно использовать 80 символов :)

Damovisa
источник
3
Я почти уверен, что он имел в виду использование предела в 80 символов в исходном коде, который почти повсеместно отображается в моноширинных шрифтах.
Fishtoaster
1
Хм ... в таком случае ... до сих пор нет, но по другим причинам :)
Damovisa
1
80 символов было жестким ограничением количества столбцов на перфокарте!
ChrisF
0

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

Лайос Месарос
источник