Чи потрібно прокручування горизонтально робити код менш читабельним?


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.

або з будь-яким рівнем відступу встановлено за умовчанням для поточної мови.

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

редагувати: ooooh, я знав, що ця відповідь буде непопулярною :)


2
Добре вам. Але що б ви зробили, якби вам довелося перейти до редактора, який не мав цієї функції?

1
@dunsmoreb: Чому ви переходите на такий застарілий редактор, що він не підтримує навіть обгортання слів (якщо ви не працюєте над вихідним кодом, написаним тридцять років тому, і не працюєте на застарілій платформі, де у вас немає вибору правильного редактор)?
Арсеній Муренко

MainMa, я маю на увазі функцію відступу вашої лінії обертання.

@dunsmoreb: якщо чесно, навіть просто загортання слів є досить хорошим, якщо довгі рядки рідкісні
amara

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

0

Звичайно, так і є. Є причина, що газети та журнали використовують колонки. Читання - важливий фактор. При читанні наші очі сканують вниз з відносно невеликим рухом в бік. Ефект полягає в тому, щоб дозволити нашим очам швидко сканувати те, що ми читаємо.

Навіть коли вони видно на широких стовпцях екрану, змушують наші очі швидко сканувати назад і назад. Під час сканування назад ми насправді нічого не розуміємо. Це значно сповільнить читання та розуміння. Ефект схожий на старі механічні принтери. Вони часто вимагають вставити кілька нульових символів після повернення каретки, щоб забезпечити час для перевезення вантажівки або друкованої головки для наступного рядка.

Додатково вертикальний макет зазвичай робиться таким чином, щоб уточнити групування вмісту в рядку. Зазвичай це стосується лише складних логічних умов. Довгі формули можуть бути краще структуровані у вигляді серії тверджень. (Оптимізатор виправить будь-які додаткові накладні витрати, а деякі оптимізатори відмовляться або погано працюватимуть у складних формулах.)

Ідентифікатори з декількома крапками, які потребують великих рядків, вказують методи кодування, які слід виправити.


0

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


0

Уникайте горизонтального прокручування.

~ Рекомендації щодо взаємодії з користувачем Windows, сторінка 112

Так.

Англійці читають зліва направо, що призводить до постійної прокрутки = Непродуктивно

З цієї причини я завжди дозволяю обгортати слова з візуальними гліфами ліній у моєму IDE.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.