Найти - Пользователи
Полная версия: Про Eclipse IDE
Начало » Python для новичков » Про Eclipse IDE
1 2
FishHook
Господа, кто-нибудь сумел заставить эту IDE нормально дополнять код для PyQt???
Андрей Светлов
автодополнение - зло
bazooka
а почему
gkraser
Андрей Светлов
автодополнение - зло
А еще экономия времени и памяти (человеческой). Да и просто приятно.

Но, к сожалению (а возможно и к счастью), в python полноценное автодополнение невозможно в принципе. Если только конечно IDE не смеет импортировать все связанные модули, что может привести (мягко говоря) к интересным последствиям.

В большинстве очевидных случаях (глобальные переменные модуля, методы класса, атрибуты класса инициализированные в __init__) eclipse (точнее pydev) прекрасно справляется.

Проблема (а в перспективе - и зло) в том, что практически возникает ситуация, когда IDE в части случаев может предложить автодополнение, а в части (основной) - нет. И человек-код-пишущий подсознательно ожидает подсказки, которая почти всегда неправильная… А не понимании природы и сущности динамических языков приводит к тому, что люди говорят - “Автодополнение работает не правильно/не так/ужас как…”.

На самом деле - это печально. Ибо в своем коде, каким бы динамически извращенным он не был, я всегда могу ткнуть носом IDE, в то, что она должна по моему разумению, показывать по Ctrl+SPACE. Однако - они думают по другому, проекты - разные, динамические извраты - тоже….

По-этому: если кто на windows => far, F4 (не настаиваю - но удобно)…, если кто на linux=> ну тут вариантов поболее :). А ide (eclipse+pydev) -> прекрасный отладчик/запускалка/unittest-runner + еще чтототамплагин…

А про автодополнение - забыть. Или по крайней мере, научится им пользоваться _скептически_.
Андрей Светлов
К сожалению, всё ещё хуже.
Даже идеально правильно работающее дополнение - зло.

Как я заметил, использование автодополнения (и быстрых переходов) изменяет восприятие с библиотеки-пакета-модуля на “непонятно где лежащий кусок кода, обладающий именем”.
В результате чужие исходники не читаются, программа перестает восприниматься как единое органическое целое, рефакторинг крайне ограничен - зато говнокод лезет из всех дыр. Чем больше людей работают над проектом тем проблема лучше проявляет себя.

Единственный полезный режим автодополнения - заканчивать, базируясь на списке слов редактируемого файла. Необходимый и достаточный минимум.
FishHook
Андрей Светлов
К сожалению, всё ещё хуже.
Даже идеально правильно работающее дополнение - зло.

Как я заметил, использование автодополнения (и быстрых переходов) изменяет восприятие с библиотеки-пакета-модуля на “непонятно где лежащий кусок кода, обладающий именем”.
В результате чужие исходники не читаются, программа перестает восприниматься как единое органическое целое, рефакторинг крайне ограничен - зато говнокод лезет из всех дыр. Чем больше людей работают над проектом тем проблема лучше проявляет себя.

Единственный полезный режим автодополнения - заканчивать, базируясь на списке слов редактируемого файла. Необходимый и достаточный минимум.
1.
Библиотека PyQt содержит более 600 классов, запомнить наизусть всё считаю не то чтобы нереальным, но ненужным занятием. Смотреть одним глазом в справочник, другим в код, конечно можно, но утомительно. С другой стороны почти всегда, пробежав глазами список, найдешь нужный метод по имени. Если работаешь с несколькими языками или библиотеками, бывает путаешься, Label.Text или Label.Capture?
2.
При чисто ручном наборе не избежать синтаксических ошибок, исправлять их конечно просто, хотя иногда глаз замыливается и просто не видит косяка, например перепутал похожие буквы или размер. Время это отнимает однозначно.
3.
Где есть автодополнение, как правило всплывает мини справка по классу или методу, например ты сразу видишь обязательные и необязательные параметры у метода, что удобно
ПС: расслаблен вижуал студией, пинайте :)
gkraser
Андрей Светлов
Даже идеально правильно работающее дополнение - зло.
Идеальное злом не может быть по определению :)

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

java программу написать без ide - практически невозможно. Нет, можно конечно, если вы задались такой целью. Однако _черезвычайно_ затруднительно. Я проводил совсем недавно такой эксперимент и пришел в некоторый ужас, когда понял, что программисты, на проекте проработавшие год(!) не знают (!) имена базовых классов. Ибо их знает ctrl+space…. И нечего с эти поделать нельзя. Ибо кроме базовых классов проекта есть еще и куча разнобиблиотечных и имя им - легион…

python не требует ide. Программу можно (и не маленькую) написать в простом человеческом редакторе (лишь бы только indent работал по Tab, да tab на пробелы заменял :)). И тут ctrl+space ненужен. Нужно помнить/знать/догадываться о именах. Возможно именно поэтому многие (очень многие) понятия/классы в python достаточно просты и интуитивно запоминаемы. В отличие от языков/библиотек, ориентированных на написание в специализированных для них ide (C#/Java). Где без автодополнения (предпологающей за тебя ide) делать нечего совсем.

Я видел, как на имя метода из 3-х символов программеры нажимали этот самый пресловутый ctrl+space, и в выпадающем (достаточно большом :)) списке искали, то что хотели ввести… Это ужасно…

Да… хотел написать одно, а что то другое вырвалось… Вообщем (по моему сугубо личному мнению, как человеку, знающем, чего он собственно хочет написать), автодополнение (как не странно) помогает знающим и мешает новичкам. Хотя должен вроде как наоборот…
Андрей Светлов
gkraser
… пришел в некоторый ужас, когда понял, что программисты, на проекте проработавшие год(!) не знают (!) имена базовых классов. Ибо их знает ctrl+space….
Именно это мне больше всего в автодополнении и не нравится. Вы привели очень характерную ситуацию.
А еще не помнят, какой класс в иерархии наследования принадлежит тот или иной метод - ведь в eclipse pydev всегда можно нажать <F3>.
Список можно продолжать очень долго.

P.S. Новичкам нужно читать исходный код до полного просветления и не жаловаться на карму.
alexx11
Сабж так же присутствует в notepad++ в релизе начиная с 5.8.6. Насколько полезна вещь, сказать сложно, т.к. не юзаю.
asilyator
alexx11
Сабж так же присутствует в notepad++ в релизе начиная с 5.8.6. Насколько полезна вещь, сказать сложно, т.к. не юзаю.
Работает не так, как в эклипсе.

Особенность динамических языков - кроме IDE, не работают еще и статические тесты. Неясно, будет мат на наличие переменной или нет, особенно если юзать херь вроде динамических имен.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB