Чи вважають програмісти Python проблемою пробілів незручною? [зачинено]


11

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

Звичайно, я не зустрічав багато програмістів Python, оскільки провів кар’єру в світі Java.

Отже, моє запитання стосується тих із вас, хто брав участь у великому проекті Python (понад 3 місяці, основним мовою якого користувався Python): Чи вважаєте ви проблему пробілів незручною та постійно дратуючим? Або це не питання, коли ви потрапили в потік?

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

Будь ласка, не вдавайте міркувань, якщо ви не досвідчені в Python.


2
Чи використовували б вони мову, якби? Я б не став. Роздратовані / відволікаючі вимоги до синтаксису - одна з речей, яка може змусити мене вибрати іншу мову для проекту (якщо, звичайно, припускати, що я можу вибрати).

оскільки коли пробіл - це проблема? :-)
Кугель

22
Ми вважаємо незручним, що всі інші продовжують виховувати це. Ми ніколи не думаємо про це.
Вінстон Еверт

Проблема пробілів не відрізняється від років тому - OCCAM2 мав значне пробіл. Це не було великою справою.
quick_now

4
Єдиний раз, коли я коли-небудь вважаю це прикро, коли копіювальний код з Інтернету був написаний за допомогою пробілів замість вкладок (або навпаки), викликаючи буквально невидимі синтаксичні помилки
Камерон

Відповіді:


14

Є лише один випадок, коли я вважаю, що пробіл дратує, і це при зміні існуючого коду, щоб блок коду повинен стати більш-менш відступним, ніж раніше (наприклад, додавання або видалення if:коду перед кодом). Коли ви пишете такою мовою, як C, ви просто додаєте ifдужки та пару дужок, і (в Emacs, або я уявляю, будь-який хороший редактор) натискаєте Tab, щоб редактор автоматично виправляв відступи. У Python ви повинні це зробити самостійно. Звичайно, є ярлики редактора, щоб зробити це самостійно, тому це не так вже й погано, але втрата надмірності накладає на програміста невелике додаткове навантаження.

В цілому, це виграш, хоча лише для того, щоб запобігти заповненню половини мого екрана такими рядками:

         }
      }
   }
}

1
У будь-якому розумному редакторі, який розмовляє Python, існує дуже простий спосіб повторити блок коду. У Wing IDE я просто вибираю блок і натискаю Tab (або Shift-Tab, щоб зменшити рівень відступу).
Адам Кросленд

1
Так, в Emacs я вибираю блок і натискаю C-c >або C-c <. Ви все одно повинні зробити це самостійно. Інакше кажучи, оскільки логіка білого простору та коду не є зайвою, ви не можете просто вибрати гігантський блок і зателефонувати M-x indent-region(або будь-яка версія версії вашого редактора), щоб відступити все це "правильно".
dfan

6
@Adam, хороший редактор полегшує зміну рівня відступу. Але мовою брекетів ви можете вставити новий код і натиснути улюблене натискання клавіш, щоб нагадувати файл. Тада! Відступ правильний. У python вам потрібно вставити, вибрати, відступити / виділити. Його не так багато, але є невеликий виграш для брекетів.
Вінстон Еверт

@Winston - повинен бути вашим редактором. Якщо код, який ви вставляєте, сам по собі є правильним відступом, то, якщо він виходить на кілька рівнів занадто далеко праворуч / ліворуч, це лише питання введення (SHIFT +) вкладки, щоб вирівняти його відповідно - не реальна різниця в натисканні клавіші на reindent файл. Окрім того - ти не повинен копіювати / вставляти код :)
Ingo

1
@Winston: навіть блоки відрізок Notepad ++ під час використання Tab і Shift-Tab, я ще не знайшов короткий штрих vim, але я його не використовую досить, мабуть: p
Матьє М. М.

50

Я люблю важливий простір Python. Для мене це ідеальний приклад DRY на синтаксичному рівні. Читаний людиною спосіб вказати, де починається і закінчується блок коду, з відступом. Якщо ви хочете, щоб ваш код був читабельним, ви повинні відрізати його незалежно від мови. Нерозумно змусити програміста вказати цю інформацію двічі, один раз для компілятора / перекладача та один раз для людей. Крім того, відступ на мовах, подібних С, схожий на коментар: Він призначений для поліпшення зрозумілості, але його значення не застосовується компілятором / інтерпретатором, і воно може легко вийти з синхронізації з реальним значенням (де є дужки), заплутаність, а не уточнення.


8
+1 - Не повторюйте себе. Доброю практикою є відступ коду таким чином, щоб він відображав структуру блоку, так чому ж почати і закінчити маркери?
Steve314

12

Значний пробіл для мене насправді зручний . Це робить мене меншим типом. Він форматує код акуратно і досить однозначно. Завдяки цьому він робить код більш читабельним.

(Мені подобаються значні пробіли в Haskell також з тих же причин.)


1
Я б поділився своїм позитивним досвідом і з пробілами Haskell, але FarmBoy наполягав на тому, що треба мати 3-місячний досвід роботи з Python, і все інше було міркуванням. :-)
Інго

1
Мій досвід роботи з Python у нас з 1998 року, тому моя відповідь, ймовірно, кваліфікується :) (Шкода, що мій досвід роботи з Haskell набагато коротший)
9000

@ 9000 Хоча Haskell прийшов перед Python! : D
pradyunsg

8

Коли я вперше застосував пітон, річ пробілу була новою і, отже, дратує обмеження.

Зараз я навіть цього не помічаю. Я використовую python вже 11 місяців.


5

По-перше - мої мови хліба та масла - Python, SQL та Java. Я люблю пробіли Python - це менше синтаксису та набору тексту, і це змушує людей писати розбірливий, акуратно відформатований код. ОТО, я ненавиджу багатослівність Java - настільки, що я фактично використовую Python для створення всіх котлів, які я повинен писати на Java, що вражає всіх моїх співробітників Java, які вражені моєю продуктивністю.

Однак, одне велике застереження - це коли копіювати / вставляти код з Інтернету - це часто спричиняє змішані пробіли та вкладки, для чого потрібен додатковий крок для очищення, і я зазвичай ловлю лише після виключення під час виконання.


Повідомлення редактору синтаксичним виділенням вкладок, оскільки помилки можуть дуже допомогти - для vim я використовую highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"в своєму vimrc
Daenyth

4

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


1
Я чув багато людей, котрі проповідували Python, які кажуть, що вони мали свої проблеми з The Whitespace Thing (tm), але мені це сподобалося через деякий час. З мого спостереження, здається, що чим більше людей приєднується до дискусії на цю тему, то поширення одного з них, який розповідає таку історію, наближається до одного. (Редагувати: негайно доведено другою відповіддю ...)

@delnan, я можу підписатися на це.
Інго

3

Б'юсь у заклад, ви знайдете значне збіг між людьми, які мають проблеми зі значним пробілом, і тими, хто не має досвіду роботи з хорошим текстовим редактором програміста, таким як Emacs, який обробляє більшість відступів без їх участі.

У будь-якому випадку, як тільки ви інтерналізували Python, це вже не проблема; насправді його лаконічність та малий простір, який він займає на екрані, стають великою перевагою для читабельності. Оскільки я в основному використовую Python, я знаходжу мови, де є більше надмірностей (наприклад, Java та C #), які важко піддаються дисциплінованості. Нанесення брекетів навколо коду, відступ якого вже робить його структуру чіткими решітками на моїх нервах.


3

Для фактичного кодування це зовсім не незручно, але насправді вигідно (див. Відповідь dsimcha).

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


2

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

Python - не одна з моїх основних мов.

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


1
змішування вкладок та місця в відступі пітона є найкоротшою дорогою до пекла: p
Матьє М.

@Mattieu: Безумовно, це моє роздратування.
BillThor

1

Я надходжу з фона C # / Javascript / XBase в не конкретному порядку, і в моїх справах з Python це для мене взагалі не враховує. Це як брекети іншими мовами - ось як це працює, вкладайте речі так, як кажуть правила, і сушити очі - це моє ставлення.

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