Чому PEP-8 визначає максимальну довжину рядка 79 символів? [зачинено]


235

Чому в цьому тисячолітті Python PEP-8 повинен визначати максимальну довжину рядка 79 символів?

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

Чи є (законно) вагомі причини прихильності 79 символів у цьому віці?


73
Відповідь на ваше запитання - у PEP-8.
cdleary

29
Більш короткі довжини лінії підвищують продуктивність, збільшуючи KLOC. : p
Олексій

26
Межа 79 символів повністю застаріла. Будь-яка скромно складна база даних показує, як це робить код набагато незручнішим для читання. Напр .: github.com/openstack/nova/blob/master/nova/network/manager.py
Джонатан

6
@Jonathan: мені добре виглядає ...
nperson325681

9
Чи не користуєтесь ви інструментами "бік-о-пліч"?
ендоліт

Відповіді:


129

Велика цінність PEP-8 полягає в тому, щоб зупинити людей, що сперечаються щодо невластивих правил форматування, і продовжувати писати хороший, послідовно відформатований код. Звичайно, ніхто насправді не вважає, що 79 оптимально, але немає очевидного виграшу в зміні його на 99 або 119 або будь-якої бажаної довжини лінії. Я думаю, що вибір наступний: дотримуйтесь правила і знайдіть вагому причину для боротьби або надайте деякі дані, які демонструють, як читабельність та продуктивність змінюються залежно від довжини рядка. Останнє було б надзвичайно цікавим і матиме гарний шанс змінити думку людей, я думаю.


28
Більшість досліджень з читання проводиться в дюймах, а не символів у рядку. Правило 66 символів ґрунтується на дослідженнях, проведених для читання газет. Останні дослідження показали, що під час читання статей в Інтернеті швидкість читання збільшується приблизно до 120 символів на рядок (10 дюймів при шрифті 12 розміру), не втрачаючи розуміння.
Темп

7
Насправді кожен, хто читає цю тему, вважає, що 79 персонажів є оптимальними. Ось чому його додали до PEP8! Ця відповідь насправді неправильна. Цей правильний
erikbwork

6
Я подумав, що питання полягає в тому, чому 79 кращий за 80 чи 78
n611x007

157
there's no obvious gain in changing it to 99 or 119 or whatever your preferred line length is Це просто так неправильно, так багато способів. Оберніть рядок на 40 символів і скажіть, наскільки це читається. Очевидно, що менше обгортання = більше читабельності, якщо у вас є простір на екрані, що у 2015 році ви робите. Обгортка впливає на читабельність. Читальність впливає на ремонтопридатність. Технічне обслуговування впливає на якість. А на якість погіршується, якщо ви обертаєтесь на 80 символів. Повна зупинка.
Джонатан

6
Сперечатися про читабельність з будь-яким не-кодом марно, оскільки ці дослідження передбачають текстовий текст. Код виглядає зовсім по-різному з різною (символьною) довжиною рядка кожного рядка. І навіть якщо ви пишете до кінця рядка, відступ змінює кількість символів на рядок.
Переконайтеся

111

Зберігання людського коду читабельним, а не машиночитаним. На багатьох пристроях одночасно може відображатися лише 80 символів. Крім того, людям з більшими екранами полегшується багатозадачність, маючи можливість встановити кілька вікон поруч.

Читання також є однією з причин примусового відступу рядків.


58
Так, надано. Але чому 79? Чому б не 100 чи 120? Збереження речі читається працює обома способами. Занадто велике читання коду вгору і вниз важко також пограбувати.
pcorcoran

17
Це правда, що багато пристроїв можуть показувати лише 80 символів. Скільки з них не можуть виконувати м'яку упаковку?
Джим,

39
Крім того, бажано не мати обгортання коду. З точки зору користувацького досвіду, для більшості це неприйнятно.
Джастін Бозоньє

8
Існують такі операційні системи, як MVS, які не можуть обробляти лінії довше 72 символів. PEP-8 тут не допоможе. Встановлення довільної межі в 79 символів не має сенсу, оскільки хороші символи в рядку залежать від редактора, монітора, особистих уподобань користувача тощо.
codymanix

96
79 символів також змушують програмістів використовувати більш короткі криптовані змінні та назви функцій, щоб все підходило. Це погано для читабельності.
Герт Штейн

46

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

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

Мені здається незадоволеним і засмучуючим, коли один із цих вихідних файлів має ширину> 120 символів, тому що це означає, що я не можу комфортно розмістити рядок коду на рядку екрана. Це порушує форматування для обертання рядків.

Я кажу "120", тому що це рівень, на який я би роздратувався, коли код ширший за. Після цього багато символів, ви повинні розділити по рядках для читабельності, не кажучи вже про стандарти кодування.

Я пишу код на увазі 80 стовпців. Це просто так, що коли я просочуюся через цю межу, це не так вже й погано.


11
"Я пишу код на увазі 80 стовпців. Це просто так, що коли я просочуюся через цю межу, це не так вже й погано". Те саме для мене.
KobeJohn

4
Через 10 років: чи це не залежить лише від того, як ви налаштували обгортання ліній. Обертання ліній може бути настільки ж розумним або дурним, як ви цього хочете. Якщо читати незручно, це просто збій у вашому редакторі.
Девід Малдер

2
Я кодую до 120 знаків, але іноді довше, коли це відповідає читанню. Чорні формати в 120, якщо ви це скажете. PEP-8 також говорить, що "добре збільшити межу довжини рядка до 99 символів", але люди, здається, пригнічують цю інформацію велику частину часу. Майже ніхто не використовує термінали шириною 80. Повідомлення журналу ніколи не становлять 80.
NeilG

37

Я вважаю, що ті, хто вивчає типографію, скажуть вам, що 66 символів на рядок повинні бути найбільш читабельною шириною за довжиною. Тим не менше, якщо вам потрібно віддалено налагодити машину протягом сеансу ssh, більшість терміналів за замовчуванням до 80 символів, 79 просто підходить, намагання працювати з чим-небудь ширшим стає справжнім болем у такому випадку. Вас також здивує кількість розробників, які використовують vim + екран як щоденне середовище.


<flame> Emacs FTW! </flame> Хоча +1. Я думаю, що обмеження 79 походить від перших днів UNIX (і, можливо, МУЛЬТИКИ), які мали термінали символів 80x25.
Джо D

10
Мій ssh ​​+ screen + vim environemnts не мають проблем із відображенням довгих рядків.
Христос

54
"66 символів у рядку повинні бути найбільш читабельною шириною по довжині". Я думаю, ми повинні писати код у 2 або 3 стовпцях, оскільки так викладаються газети?
Марк Е. Хааз

23
@mehaase: ваше саркастичне зауваження досить близьке до істини: порядні редактори можуть робити розділені панелі та показувати різні речі поруч (з одних і тих же або різних файлів). Випадково це, як правило, можливо лише тоді, коли в коді є стандарт довжини рядка ...
nperson325681

2
@mehaase: Насправді звучить приголомшливо. Я не жартую.
Teekin

19

Друк однобічного шрифту за замовчуванням розміром (на папері А4) становить 80 стовпців на 66 рядків.


11
Я приймаю цей стандарт; це дійсно. Але хто більше друкує код? Крім того, хто друкує код із середовища, яке не має толерантності до масштабування чи інших параметрів форматування? Коли востаннє хтось, кого ви знаєте, був спотиканий їх нездатністю видати рядок із 100 символів?
pcorcoran

3
Чому люди друкують код у 2012 році? Це нагадує мені йти на технологічну конференцію і роздавати сумку та друковану палітурку, наповнену презентаціями. Це люди 21 століття: надішліть мені по електронній пошті гірки та інше, що сумка та палітурка йдуть прямо на сміттєзвалище.
Марк Е. Хааз

2
так чому 80-1 краще, ніж 80-0 або 80-2?
n611x007

11
"за замовчуванням" Ви кажете? Розкажіть мені більше про ці загальноприйняті типорозміри.
Бруно Броноський

15
Так, давайте розставимо пріоритет у тому, як цей код виглядає на друкованому папері понад усе.
Джонатан

8

Ось чому мені подобається 80-символьний: на роботі я використовую Vim і працюю над двома файлами одночасно на моніторі, на якому працює, я думаю, 1680x1040 (я ніколи не пам'ятаю). Якщо рядків більше немає, у мене виникають проблеми з читанням файлів, навіть при використанні обгортання слів. Потрібно сказати, що я ненавиджу спілкуватися з кодом інших людей, оскільки вони люблять довгі рядки.


Ви також не використовуєте vim для javascript / html?
радісне срібло

2
@eladsilver Я не можу розібратися, якщо це жарт? :-D
Церква Стівена

Вибачте, не дуже глибокий з vim, очевидно, якщо ви працюєте в Інтернеті, ви використовуєте його також для html / js, і ці типи ніколи не мають обмеження 80 знаків, оскільки розробники переднього кінця не знають про pep8, тому роблячи python limit 80-char не вирішить вашу проблему, якщо ви будете використовувати більше, ніж лише python. тому я запитую, як ви обробляєте інші мови кодування?
радісне срібло

Я працюю у Vim із 120 символьними рядками. Я використовую: diffthis з горизонтальним розщепленням. Якщо ви можете розмістити лише 160 символів на 1680 пікселів, ви повинні мати великий шрифт.
NeilG

4

Оскільки пробіл має семантичне значення в Python, деякі методи загортання слів можуть давати неправильні або неоднозначні результати, тому для уникнення цих ситуацій потрібно мати деяку межу. Довжина рядка в 80 символів була стандартною, оскільки ми використовували телетипи, тому 79 символів здаються досить безпечним вибором.


4
Існує два різних типи переносу слів. Є жорстке обгортання, де рядки розбиті новими рядками, і є м'яке обгортання, де вони відображаються лише з перервами, але фізично залишаються єдиною лінією. Я не бачу жодної проблеми з останнім.
Джим,

4
Більшість редакторів Python не виконують м'яке обговорення слів, оскільки це створює неоднозначний важко читається код мовою, де важливі пробіли та відступи.
Кріс Upchurch

4
Він не створює неоднозначного чи важкого для читання коду до тих пір, поки обгортка візуально ідентифікується якось. Кейт це робить, і це прекрасно працює. Якщо редактор не справляється з цим, то це є причиною подати помилку на редактор, а не причина нав'язувати стиль кодування, що дозволяє уникнути помилки.
Джим,

5
Навіть якщо він вказаний візуально, він все ще робить код набагато складнішим для читання, тому редактори Python зазвичай його не підтримують.
Кріс Upchurch

Ви насправді пробували це протягом тривалого періоду часу? У мене є. З мого досвіду це не ускладнює читання коду. Чи можете ви створити резервну копію твердження, що саме тому редактори Python не включають цю функцію? Я ніколи раніше не чув цієї претензії.
Джим,

1

Я згоден з Джастіном. Для уточнення, занадто довгі рядки коду важче читати людині, а деякі люди можуть мати консольні ширини, що вміщують лише 80 символів на рядок.

Рекомендація щодо стилю є для того, щоб код, який ви пишете, міг читати якомога більше людей на якомога більшій кількості платформ і максимально комфортно.


10
Це ледачий аргумент. Не завжди буває так, що 80 рядків шкодить читабельності. Швидкий погляд на будь-яку скромно складну кодову базу Python, яка охоплює 80 рядків, насправді демонструє зворотне - що при обробці однолінійних функцій викликів до декількох рядків важче слідкувати за WTF.
Джонатан

0

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


90
-1, я не думаю, що ви можете категорично сказати, що для будь-якої лінії, що минає границю 80 знаків, потрібен рефактор. Методи класу вже двічі відступають, додають ще одне відступ для "якщо" тощо та просте розуміння списку, і це досить просто перетнути межу 80 знаків.

42
Не кажучи вже про те, що якщо ви будете називати символи таким чином, щоб вони були зрозумілими для людини, наприклад, "users_directed_graph" замість "usr_dir_gph", то навіть простий вираз буде з'їдати досить багато символів на рядок.
Марк Е. Хааз

8
У Python я завжди знаходив, що якщо я перевищу 80 знаків, розумно зупинитися і подумати, чому це так. Зазвичай неправильне дизайнерське рішення винне.
Майк Велла

3
Це був і мій досвід. Він також стосується більш довгих імен змінних, як вказує @mehaase, але я думаю, що це користь. Наявні комбінації трьох послідовних слів (у випадку "users_directed_graph") зменшують кількість компонентів, які розумно вписуються в єдиний простір імен. Я вважаю, що я написав старіший код, коли багато подібних довгих імен змінних знаходяться в одному просторі імен, щоб їх було важче читати, а загалом краще - рефактор.
TimClifford

4
Мовою, яка потребує відступів для кожної зміни області, мовляв, що 80 символьних ліній прирівнюється до складності, є надмірно спрощеним аргументом. Іноді 80 символів - це саме те, що потрібно для виклику функції. Сучасні редактори IDE для інших мов досить розумні, щоб визнати це, і вони можуть помітити, коли його робити, на відміну від встановлення обмежених обмежень на все, що завдає шкоди читабельності в цілому.
Джонатан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.