Исследования по оптимальной ширине кода?

Если вы включите «Просмотр правого поля» в выбранной среде IDE, вполне вероятно, что по умолчанию он будет равен 80 символам. Я склонен менять его на 120 без всякой причины, кроме того, что это было стандартом в компании, в которой я работал несколько лет назад, и ни одна другая компания не посоветовала мне сделать это иначе.

Мой вопрос: есть ли какие-либо исследования, которые действительно показывают, что 80 символов являются оптимальной максимальной шириной для удобочитаемости кода, или это значение просто «так было всегда», и никто не знает, почему это так? И должна ли ширина строки кода быть частью вашего стандарта кодирования?


person Fostah    schedule 23.02.2009    source источник
comment
Хотя мне не известны какие-либо исследования, вы найдете множество мнений в качестве ответов на этот вопрос: * Есть ли веская причина для применения максимальная ширина файла кода - 80 символов, в наши дни?   -  person Adam Bellaire    schedule 23.02.2009
comment
я не знаю исследований, но вам может быть интересно взглянуть на различные стандарты кодирования проектов. Например, Google состоит из 80 символов. (code.google.com/p/google-styleguide) где как WebKit ( аля Apple?) не имеют ограничения AFAIK (webkit.org/coding/coding-style.html). Mozilla, похоже, 80 (developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length)   -  person gman    schedule 16.05.2012


Ответы (11)


Фактически, 80-столбец давно предшествует DOS . Это происходит от перфораторов для карт, которые представляли собой устройства с 80 столбцами.

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

person Community    schedule 23.02.2009
comment
Я действительно не верю, что вы можете сравнивать чтение естественного языка с чтением языка программирования с точки зрения удобства использования. - person Frug; 14.12.2012
comment
@Frug - на самом деле, вы, вероятно, сможете. Причина ширины 65 символов не в том, что строки большего размера не читаются, а в том, что дуга слишком узкая, когда взгляд перемещается на следующую строку. Вы можете обойти это, увеличив высоту строки, но это затрудняет использование интервала между блоками для передачи смысла, поэтому, вероятно, этого следует избегать в среде IDE. - person Jimmy Breck-McKye; 24.12.2012
comment
@Jim - Мой естественный язык не содержит слов, состоящих из 30 символов (в любом случае, я не использую их), и он анализирует совершенно иначе, чем язык программирования. Часто можно сгруппировать строку кода отдельно от остального, будь то длинная условная строка или комбинация длинных методов и классов. Добавьте сюда отступы, и сравнение двух языков станет абсурдным. Я не сомневаюсь, что кто-то, кто изучает читаемость и длину строки, будет возражать против того, чтобы вы заметили различия. - person Frug; 27.12.2012
comment
@Frug - Я действительно не понимаю, как ваши возражения связаны с какими-либо утверждениями, которые я сделал, но я вижу, что отступ нарушает модель, которую я предлагаю. Но не называй меня «Джим». - person Jimmy Breck-McKye; 28.12.2012
comment
Во-вторых, вам следует чаще смотреть, как это делают книги. Например, меня раздражает, насколько плохо программное обеспечение часто помещает поля или подобное пространство там, где это необходимо. Например. в Eclipse нет пробелов между номерами строк и текстом программы. - person starblue; 13.07.2013
comment
Книгу обычно кладут гораздо ближе к глазам, чем монитор, а это означает, что в строке допускается меньшее количество символов, если читатель должен иметь возможность читать книгу без необходимости вытягивать шею. Экран обычно не размещается на расстоянии от книги, что означает, что в каждой строке можно использовать больше символов, не выходя за пределы максимального угла обзора. Кроме того, код не столько читается, сколько просматривается, что делает эту ширину менее важной. Я (YMMV) легко могу следить за строками со 120 символами кода на экране моего ноутбука, но, увы, это слишком велико для двух буферов emacs на моем 15 ноутбуке. - person Obscaenvs; 23.08.2013
comment
Давайте просто соберемся с духом и встретимся со слоном в этой комнате: @Obscaenvs просто имеет больше смысла, чем все остальные здесь вместе взятые. Прибил суть проблемы прямо по голове. - person ChaseMoskal; 09.02.2014
comment
Спасибо, @ChaseMoskal! ... а где эта кнопка "Follow"? :) - person Obscaenvs; 15.02.2014
comment
За этот ответ следовало проголосовать против, а не за, он не отвечает на вопрос. Это популярно только потому, что многие программисты думают о нем. - person oz123; 16.02.2016
comment
В этих обсуждениях люди всегда делают вид, что у всех строк есть предел. - person olyk; 03.06.2020

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

Причины предпочесть 80:

  • Читается с большим шрифтом на ноутбуках

  • Оставляет место для размещения двух версий рядом для сравнения

  • Оставляет место для представлений навигации в среде IDE

  • Печать без произвольных разрывов линий (также относится к электронной почте, веб-страницам и т. Д.)

  • Ограничивает сложность одной строкой

  • Ограничивает отступ, что, в свою очередь, ограничивает сложность методов / функций

Да, это должно быть частью стандарта кодирования.

person starblue    schedule 23.02.2009
comment
Это веские причины, чтобы уменьшить ширину линии до 80 символов. Я очень удивлен (разочарован), что ваш ответ, четко продуманный и правильный, не набрал больше баллов. К этому списку я бы добавил: (1) горизонтальная прокрутка - это не весело. (2) Вы можете значительно увеличить плотность кода, над которым работаете, просматривая этот код в нескольких столбцах. Большая часть недвижимости тратится зря, когда у вас есть несколько линий, которые уходят далеко вправо, в то время как большинство других линий нет. - person Donnie Cameron; 13.07.2013
comment
хорошо, но что происходит, когда есть блок кода с небольшим количеством отступов? то, что случилось со мной, и 80 персонажей - это совсем не весело. - person EKanadily; 05.02.2015
comment
Limits the complexity in one line Я не уверен, почему лучше распределять сложность по нескольким строкам. Это просто добавляет больше в ваш умственный стек. - person Jonathan; 09.07.2015
comment
Это очень старая тема. но согласны ли вы сейчас, что множество разработчиков используют 27-дюймовые мониторы :-). Я имею в виду, что если зрение является проблемой, может помочь экран большего размера. 8 лет назад мы все еще работали над 17 или 20-дюймовыми мониторами, а некоторые даже с разрешением 4: 3. - person Mathijs Segers; 21.11.2017
comment
@MathijsSegers, независимо от размера или разрешения монитора, по-прежнему удобнее держать текст в пределах 30 средних градусов вашего поля зрения. При работе с несколькими открытыми окнами на мониторах, расположенных рядом, я обычно поворачиваю голову, чтобы смотреть с одного на другой. Человеку не нужно поворачивать голову или поворачивать глаза полностью, чтобы читать от одного конца строки до другого. Такое быстрое вращение глаз или головы могло бы вызвать головокружение, если бы проводилось весь день. - person maurice; 05.02.2018
comment
Сужение кода означает, что он становится длиннее. Так что сразу видно меньше. Так что на самом деле ИМХО читать становится сложнее. - person Tuntable; 12.08.2019
comment
Я сторонник ограничения в 80 символов, за исключением таблиц данных (например, постоянных массивов структур), где разделение строк на несколько строк затрудняет чтение. Это единственное исключение, когда я не против горизонтальной прокрутки ради ясности и простоты обслуживания. - person Emile Cormier; 13.04.2021

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

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

Например, когда я работал в Emacs на XWindows, хорошо было иметь два окна Emacs, расположенные рядом все время. Это ограничило их 80 символами, так что это была моя максимальная длина строки.

В какой-то момент я работал в Visual Studio на экране 1920х1200. Я бы держал его развернутым, со всеми окнами инструментов, пристыкованными к одной стороне. Оставалось достаточно места для двух окон редактора, расположенных рядом, примерно по 100 символов.

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

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

person Jay Bazuzi    schedule 23.02.2009
comment
плюс один за зоркий взгляд, потому что действительно то, что случилось со мной. - person EKanadily; 05.02.2015
comment
Исключение, при котором следует допускать горизонтальную прокрутку, - это таблицы с постоянными данными, чтобы не было строк, занимающих несколько строк. - person Emile Cormier; 13.04.2021

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

  • Я (почти) никогда не использую несколько операторов в одной строке
  • Я использую длинные линии (> 12) только в том случае, если похожие линии можно выровнять, а не разорвать.
  • Я всегда использую достаточно пробелов / скобок и т. Д.
  • Я предпочитаю более длинные имена переменных выше более коротких.

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

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

person Michel Keijzers    schedule 19.03.2010
comment
Как 120–150 символов в строке работают при одновременном открытии нескольких окон? Многие ли окна редактора кода открыты рядом? - На моем 30-дюймовом мониторе у меня может быть 3 окна рядом, если я ограничу количество строк до 97 символов на строку. - person KajMagnus; 02.12.2012
comment
Я кодирую на большом дисплее, и мне также нравятся большие суммы. Я стремлюсь к 110-130. Одна из моих основных целей - удобочитаемость, и, на мой взгляд, разбиение утверждений на 2-3 строки иногда менее читабельно. Я также иногда перехожу к 500-1000, чтобы скрыть нежелательный мусор, который я не хочу видеть, например, некоторые комментарии, отключенный код и некоторые жестко запрограммированные значения. Думаю, это зависит и от программиста. Если большинство кодеров работают на 80, то лучше всего стремиться к этому при работе с общим кодом. - person SunsetQuest; 05.02.2015

Может быть, 80 символов - тоже хороший повод избежать этих плохих цепочек геттеров:

object.getFoo().getBar().getFooBar().get ...

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

Кроме того, 80 персонажей, как упоминалось ранее, великолепны. Это определенно должно входить в стандарты кодирования.

person Christopher Klewes    schedule 05.08.2009
comment
К вашему сведению, такое чрезмерное объединение методов в цепочку известно как анти-шаблон "поезд-крушение". - person Dennis; 22.05.2016

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

  1. Глазные яблоки человека круглые, а не узкие и широкие, и в основном их разрешение находится посередине.. Когда вы читаете часами, гораздо удобнее проводить глазами короткими дугами, используя при необходимости одну полосу прокрутки. Я не знаю формального исследования, посвященного разборчивости кода, но по моим собственным наблюдениям, с монитором на расстоянии 2 фута, с размером текста моноширинным шрифтом 10 пунктов, 100 символов занимают около 1/3 моего горизонтального поля. зрения, или около 60 градусов (за пределами 30 градусов или около того, когда разрешающая способность всех наших глаз находится на уровне).
  2. Большинство людей используют большой монитор на работе, чтобы видеть несколько объектов, не щелкая взад и вперед, а не для того, чтобы видеть что-то действительно большое.
  3. Более короткие строки содержат меньшую сложность, что, как мы надеемся, вынуждает разработчика разбивать свой код на более удобоваримые единицы.
person maurice    schedule 29.09.2016

Я отчетливо помню, как где-то читал (думаю, это было в Agile Documentation), что для оптимальной читабельности ширина документа должна составлять около двух алфавитов или 60-70 символов. Я думаю, что ширина линий старых терминалов частично объясняется тем старым типографским правилом.

person lindelof    schedule 23.02.2009

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

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

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

person Nir    schedule 23.02.2009

Из https://en.wikipedia.org/wiki/Line_length

введите описание изображения здесь

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

person Emile Cormier    schedule 29.08.2020
comment
какой принцип? Википедия постоянно меняется, просьба цитировать соответствующий текст. - person apple apple; 12.04.2021
comment
@appleapple. Добавил цитату, хотя признаю, что это немного. Спасибо. - person Emile Cormier; 12.04.2021
comment
спасибо :) просто чтобы указать, на текущей странице википедии под Electronic text в настоящее время говорится (новый комментарий, так как он слишком длинный на 6 символов: /) - person apple apple; 13.04.2021
comment
просто чтобы указать, на текущей странице википедии под Electronic text в настоящее время написано Если строки слишком длинные, читателю трудно быстро вернуться к началу следующей строки (саккада), тогда как если строки слишком короткие, больше потребуется прокрутка или листание. Исследователи предположили, что более длинные строки лучше подходят для быстрого сканирования, а более короткие строки лучше для точности. В этом случае более длинные строки лучше подходят для случаев, когда информация, вероятно, будет сканироваться, а более короткие строки будут уместны, когда информация предназначена для тщательного прочтения. - person apple apple; 13.04.2021
comment
как примечание. В этом абзаце, как я читал, 222 символа в строке (включая пробел) - person apple apple; 13.04.2021
comment
@appleapple, я это видел, но мой ответ был с точки зрения печатных книг, а не электронного текста. Не стесняйтесь добавить свой собственный ответ, если хотите осветить исследование электронного текста. :-) - person Emile Cormier; 13.04.2021
comment
Нет проблем :) просто укажите, что википедия говорит (на экране) длинная строка лучше для взгляда. - person apple apple; 13.04.2021
comment
@appleapple Непонятно, что они имели в виду под сканированием. Сомневаюсь, что это то же самое, что взглянуть. Я предполагаю, что они имели в виду поиск определенного слова или фразы. Действительно, цитирование ссылается на статью под названием Влияние типа шрифта и длины строки на визуальный поиск и поиск информации на веб-страницах (выделено мной). Когда я пишу таблицы данных, я часто намеренно нарушаю ограничение в 80 символов, чтобы строки не занимали несколько строк. Так легче найти информацию, что, возможно, связано с утверждением, что длинные строки легче сканировать (т. Е. Искать). - person Emile Cormier; 13.04.2021

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

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

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

person Jonas Lihnell    schedule 20.05.2014

Насколько мне известно, 80 символов используется в качестве стандарта кодирования для обеспечения совместимости с редакторами командной строки (ширина терминала по умолчанию обычно составляет 80 символов). С современными IDE и большим разрешением экрана 80 символов, вероятно, не «оптимальны», но для многих разработчиков важно поддерживать удобочитаемость в терминале. По этой причине маловероятно, что ширина 80 символов будет заменена фактическим стандартом ширины кода в ближайшее время. И чтобы ответить на ваш последний вопрос, да, ширина кода, а также любые другие характеристики, которые будут влиять на читаемость вашего кода, должны быть рассмотрены в ваших стандартах кодирования.

person Community    schedule 23.02.2009