Делает ли горизонтальную прокрутку код менее читабельным?


12

Ну так ли? Это считается плохой практикой?

ИМО, это менее читабельно. Ненавижу прокручивать вправо, затем назад влево, вправо, влево и так далее. Это делает кодирование более болезненным и иногда смущает меня.

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

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."

15
Да. (и не забудьте сделать отступы на линиях)
Хавьер

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

1
Я могу перемещаться по коду по вертикали и по линиям на высокой скорости с помощью нескольких клавиш, горизонтальная прокрутка раздражает при сравнении.

Широкие столбцы делают что-либо менее читабельным. Это было определено много раз.
Дэвид Торнли

2
Я согласен. Единственная проблема состоит в том, чтобы заставить всех договориться о том, как широко сделать ваш редактор. В очень широком коде я обычно просто устанавливаю перенос, если у меня есть тонна, чтобы прочитать его.
Карл Билефельдт

Ответы:


19

Да, действительно, в буквальном смысле, а также в общем смысле.

Мне нравится делать различия в коде бок о бок, а слишком широкие линии делают это сложнее:

http://i.stack.imgur.com/fWVuz.jpg

Такие языки, как Scala со строками в тройных кавычках, позволяют создавать строки из многих строк без затрат времени выполнения, неприглядных кавычек и знаков плюс (как видно в вашем примере) объединения частей строки.


11

Да, я думаю, что 80 символов в строке являются разумными и широко используемыми.


6

Это действительно важный вопрос для меня! Я работал 7 месяцев на 13-дюймовом ноутбуке с коллегами, имеющими 24-дюймовые настольные мониторы, и я потратил много времени на сокращение строк, чтобы получить что-то читаемое.

80 столбцов во многих случаях немного малы (кроме случаев, когда вы работаете на терминале с единственной опцией vi;)), но больше ~ 150 - это слишком много (см. Ниже).

Это вопрос о «читабельности».

Теперь, что касается «хорошей практики», я очень часто нахожу такие длинные строки с ошибками, то есть с частью, которая должна быть извлечена во временной переменной или дублирована, например (ObjectiveC, общий фрагмент в программировании iPhone) :

CGPoint point = CGPointMake(someOtherView.frame.origin.x + someOtherView.frame.size.width, someOtherView.frame.origin.x + someOtherView.frame.size.height);

Обратите внимание, что это может стать еще более неприятным при работе с 3-мерными векторами или матрицами.

Переписанный пример:

CGRect frame = someOtherView.frame;
CGPoint origin = frame.origin;
CGSize size = frame.size;
CGPoint point = CGPointMake(origin.x + size.width, origin.x + size.height);

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


4

Не всегда.

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

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

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


2
Я не знал, что некоторые программные биты важнее других. Я постараюсь улучшить свою производительность таким образом: кодировать только важные биты.
Mouviciel

1
@mouviciel, Дело не в том, что левая сторона кода важнее, а в том, что семантически левая сторона кода имеет большее значение для понимания того, что делает строка кода, чем правая. Когда вы сканируете код, вы часто читаете только начало строки, чтобы понять, что он делает, прежде чем переходить к следующей.
Крис Найт

1
Для меня аргументы, передаваемые методу, имеют такое же значение, как и имя метода. Оставляя эту информацию, можно догадаться, что код делает больше, чем понимать.
Mouviciel

1

Да.

Кстати чаевые. Если вы используете язык с многострочными строками (они есть практически во всех языках сценариев) и включают в себя длинный SQL, это действительно помогает читаемости поместить SQL в многострочную строку, используя согласованные правила форматирования для SQL. См. Http://bentilly.blogspot.com/2011/02/sql-formatting-style.html для стиля форматирования, который я использую.


1

Нет, это не так.

У меня есть редактор. Мало того, что у него есть перенос строки, у него есть отступ строки , который (если экран, скажем, шириной 100 символов) вызовет

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

выглядеть как

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 
    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
    laboris nisi ut aliquip ex ea commodo consequat.

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

Строки, которые шире моего экрана, никогда не делают код менее читаемым по сравнению с кодом с переносом строки.

редактировать: оооо, я знал, что этот ответ будет непопулярным :)


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

1
@dunsmoreb: Почему вы переключаетесь на редактор, который настолько устарел, что не поддерживает даже перенос слов (если вы не работаете с исходным кодом, написанным тридцать лет назад, и не работаете на устаревшей платформе, где у вас нет выбора правильного редактор)?
Арсений Мурзенко

MainMa, я имею в виду функцию отступа переноса строк.

@dunsmoreb: если честно, даже просто перенос слов достаточно хорош, если длинные строки встречаются редко
amara

7
Тот факт, что ваш редактор может обернуть строку, не означает, что она обернет ее наиболее логичным местом для удобства чтения.
Крейг,

0

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

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

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

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


0

Мышки-колёсики позволяют быстро прокручивать по вертикали ... горизонтальная прокрутка слишком дорога для сравнения.


0

Избегайте горизонтальной прокрутки.

~ Руководство по взаимодействию с пользователем в Windows Pg 112

Да.

Англичане читают слева направо, что приводит к постоянной прокрутке = непродуктивно

По этой причине я всегда включаю перенос слов с помощью визуальных линейных символов в моей IDE.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.