Eclipse как IDE - Что вы считаете отсутствующим как новичок в Java?

Я работаю над решением, которое нацелено на решение проблем, которые испытывают программисты-новички, когда они "изменяют код", при исправлении ошибок или выполнении запросов на изменение кода в процессе производства. Eclipse, как мы все знаем, является отличной средой разработки. Такие функции, как завершение кода, открытая декларация, иерархия типов, обозреватель пакетов, навигатор, поиск ссылок и т.д., Помогают людям быстрее фиксировать вещи по сравнению с тем, чтобы использовать что-то вроде Textpad.

Если вы программист java для новичков, и вы используете Eclipse IDE, какие области среды Eclipse вы считаете менее полезными/менее интуитивными? Если вы опытный программист, каковы общие проблемы, которые новички ищут для вас, чтобы решить их?

Пожалуйста, проигнорируйте проблемы, связанные с: Экспертиза домена (Бизнес-знания), Infra (где проверить ваши изменения и т.д.), связанные с производительностью (медленный поиск в eclipse и т.д.), уровень навыка на определенном языке (подумайте о разработчике как noob)... и думаю, что один язык - Java

Я сделал локальный опрос в своей небольшой команде, и вот некоторые из них:

  • Новички, использующие Eclipse для обработки кода, написанного на интерфейсы, где реализация предоставляется во время выполнения. Выполнение "Открытой декларации" всегда будет показывать вам интерфейс. Иногда это может сбивать с толку.
  • Eclipse не является интуитивным при разработке EJB. Конечно, вы знаете, что все, что вам нужно сделать для создания нового bean, - это щелчок правой кнопкой мыши и "Создать Bean", однако после его создания нет контекстной справки о том, каким должен быть следующий шаг. Например, генерация заглушек.
  • Когда сопоставление источника данных с сущностью beans, что-то меняет что-то, закручивает весь поток вещей, а eclpise никогда не жалуется/намекает.
  • При разработке приложений, использующих Struts, eclipse не скажет вам, что при изменении struts-config.xml будет затронуто определенное влияние веб-потока.

На данный момент для меня, как для кого-то, кто заинтересован в сборе мнений для моих исследований, кажется, что Eclipse может использовать больше "контекстных подсказок времени выполнения".

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

EDIT: Я думаю, мой вопрос был слишком длинным и запутанным. Я немного перефразирую его и сделаю короткое:

В то время как "изменение кода" (не похоже на форматирование кода, связанные с ним действия, CVS и т.д.... что-то вроде рефакторинга), какая функция Eclipse IDE вам не понравилась/ненавидела больше всего? Вот примеры:

  • При изменении кода, который был записан на интерфейсы: "Open Declaration/F3 в экземпляре объекта показывает интерфейс, когда реализация предоставляется во время выполнения".
  • При изменении приложений с использованием EJB: нет контекстной справки
  • При изменении приложений с использованием MVC (Spring/Struts): никаких предупреждений об изменении не происходит.

Ответы

Ответ 1

В Eclipse отсутствуют:

Визуализация программного обеспечения, как, например, System Complexity View [Lanza 2003]

А также Ланца, проект класса [Ducasse 2005]

Post Scriptum: Визуализация программного обеспечения в Eclipse: X-Ray предоставляет представление о сложности системы Java-проектов, http://xray.inf.usi.ch/xray.php (через @anjaguzzi и Пола Ламмерцма)

Software Visualization

И затем совместная фильтрация "другие разработчики, которые редактировали этот метод, прежде чем также редактировали" [Zimmermann 2005]

И коллекция доступных для просмотра примеров, и автозаполнение на уровне этих примеров. Это, например, если вы пишете

ByteBuffer buf = file.

и, нажав автозаполнение, он должен найти в кодовой базе и во внутренних сетях примеры, которые преобразуют файлы в байтовые буферы и вставляют туда эти 10-20 строк.

  • Parseweb поддерживает разработчиков, рекомендуя последовательности вызовов методов, которые дают требуемый тип данных назначения из заданных типов входных параметров. http://doi.acm.org/10.1145/1453101.1453129
  • Prospector поддерживает разработчиков, рекомендуя последовательности вызова методов, которые дают требуемый тип данных назначения из заданных типов входных параметров. http://doi.acm.org/10.1145/1064978.1065018
  • Страткона предоставляет примеры исходного кода и структурный текст con- для разрабатываемого фрагмента кода. http://lsmr.cpsc.ucalgary.ca/papers/holmes-icse-2005.pdf
  • Rascal рекомендует, как и когда вызывать методы объектов из общих библиотек, таких как Java Swing, на основе анализа существующих классов. Он использует совместную фильтрацию. http://dx.doi.org/10.1007/s10462-005-9012-8

И, конечно же, возможность писать unit тест, а затем в среде IDE выполняется поиск классов, которые проходят тест. Да, это можно сделать!

  • CodeGenie - это плагин Eclipse, который позволяет писать модульные тесты, а затем использует механизм поиска исходного кода Sourcerer для поиска проходных классов. http://doi.acm.org/10.1145/1529282.1529384
  • CodeConjurer, основанный на Merobase, также предлагает эту функцию, см. Http://dx.doi.org/10.1109/MS.2008.110

Этот список можно продолжать и продолжать, хорошей отправной точкой для дальнейшей работы являются материалы прошлого

которые все под эгидой конференции ICSE.

Ответ 2

Для меня большая часть проблем с новичками в Eclipse исходит из одной из сильных сторон, его конфигурируемости и структуры плагинов.

Когда мне нужно изменить свойство в Eclipse, мне всегда кажется, что нужно потратить несколько минут на разработку, где его изменить. Пример: изменение редактора Java для вставки 4 пробелов вместо вкладки. Строка поиска в свойствах всегда приветствуется: -)

Это и отсутствие документации для некоторых из плагинов всегда приносит удовольствие, когда я настраиваю проект.

EDIT: вы всегда можете показать классы, реализующие интерфейс, используя ctrl-T.

Я бы добавил, что когда у меня сложный проект, я обычно использую Refresh и Project- > Rebuild All * много. И я использую TortoiseSVN для maniuplate вне Eclipse, потому что много раз это (например, рефакторинг). Однако, если я изменяю проект за пределами Eclipse, я всегда "прекращаю Eclipse" и полностью обновляю и строю, когда перезапускаю его. В противном случае Eclipse иногда сильно путается.

Ответ 3

"Проблемы с новичками" Я видел себя (я использовал Eclipse на некоторое время, но иногда меня это "удивляет" ) и помогает коллегам начать использовать Eclipse:

  • Это большой и достаточно сложный, чтобы вначале быть очень пугающим. Похоже, что люди считают, что чистые бобы легче использовать изначально. Один из коллег нашел убежище в редакторе VI для бога, в то время как...
  • Установка плагинов может быть сложной (найти URL-адреса сайтов, узнавать о плагинах, почему "установить" + "обновление" в меню "Справка" )
  • Обновления все еще медленны (но намного лучше, чем раньше) с Eclipse 3.5/Galileo. Трудно понять, какие плагины устанавливать по имени иногда.
  • Любая платформа помимо Mac - предпочтения в меню "Окно" кажутся нелогичными?
  • Понимание того, как правильно установить путь к проекту. Установка правильной версии JDK для проекта.
  • Отсутствие или неожиданное взаимодействие между классами классов ant/maven build tools и функцией eclipse (ant/maven clean вызывает ошибки компилятора Eclipse при совместном использовании classpath и т.д.).
  • Представления и (большое количество) перспектив сначала запутывают/подавляют. Что полезно когда? Как перетащить вид в нужное место или восстановить закрытые?
  • Некоторые комбинации версий JDK/Eclipse требовали слишком много пространства PermGen, чем по умолчанию, потребовалось некоторое время для диагностики.

Ответ 4

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

  • Spring
  • Maven
  • JSF/Struts 2
  • Subversion
  • JUnit

Я думаю, что Eclipse обрабатывает эти технологии в повышении уровня осведомленности: (поэтому JUnit будет в порядке, он работает из коробки, Subversion требует Subclipse, и это немного ролее, чем поддержка CVS; JSF нуждается в некоторых инструментах WTP установленный, Maven... вам, вероятно, лучше не создавать собственные команды внешних инструментов, а не доверять M2Eclipse, если в последнее время он не станет значительно лучше, а Spring, ну, как вы говорите, попробуйте ctrl-щелчок на и вы почти наверняка получите интерфейс, потому что реализация скрыта за конфигурационным файлом Spring).

Получение всего этого для совместной работы и проверки/компиляции, а затем компиляция/запуск тестов/проверка - это сложный бит. Само изменение кода, вероятно, легко:)

Ответ 5

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

Ответ 6

Как новичок, я не делал EJB или Struts. Или даже отображение источника данных. Поэтому я думаю, что название вопроса может немного ввести в заблуждение.

Я бы оценил наличие чего-то типа JadClipse, встроенного для "просмотра" кода библиотеки, когда я ударил его при отладке или тому подобное. Но должно быть сделано ОЧЕНЬ ясно, что это "восстановленный код" и не предназначен для взлома.

Во-вторых, noobs должны быть намного лучше осведомлены о том, что Shift-F2 получит им документацию API для любого класса/метода, на который они смотрят. Я знаю слишком много начинающих Java-программистов, которые изучают свои API-интерфейсы, не более чем завершение кода; им не хватает многих ценных советов, предоставленных авторами библиотеки.

Ответ 7

Средство чтения, которое генерирует код "на лету", так что для завершения проекта достаточно одного щелчка.

Ответ 8

Я нашел Visual Studio легко подобрать, я попытался щелкнуть по каждой кнопке хотя бы один раз и понял, что все это делает. Это продумано единой командой разработчиков на самом высоком уровне, и все это следует за стандартами сверху вниз, более или менее.

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

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

Ответ 9

Вот основные недостающие функции, насколько мне известно:

  • Показать начало '{', когда вы находитесь в конце '}', где начало '{' находится вне представления
  • Автоматическая синхронизация редактора с проводником пакетов
  • Перейдите к другому представлению (проводник пакетов, схема и т.д.) с помощью клавиатуры
  • Встроенный поиск, который не открывает диалог.
  • Перейти к следующему местоположению ошибки с клавиатурой
  • Перейти к следующей/предыдущей структуре с клавиатурой
  • Больше стабильности в целом.

Эти функции отлично работают в IntelliJ. Особенно полезны # 1 и # 5.

Ответ 10

Недавно я был noob для затмения, в основном занимался Android и BlackBerry. И одна вещь, которая ускользает от меня по сей день, - это огромное множество опций и настроек и различных мест, в которых они могут быть найдены. Например, если у вас установлен плагин (скажем, плагин BlackBerry), этот параметр можно найти в общих префиксах или префиксами BlackBerry или префиксами проекта.

Это всегда охота.

Ответ 11

Интеграция VCS - как правило, разработчик также новичок в слиянии изменений, синхронизации рабочих копий, разрешении конфликтов и т.д. В Eclipse часто существует несколько способов достижения одного и того же, и я неоднократно видел эту причину путаницы (на самом деле, я тоже это видел с опытными разработчиками, они знают Subversion, но не Eclipse, и последний пытается "скрыть" "основные операции хранилища".

Ответ 12

Я думаю, что проблема со всеми IDE для начинающих - это отключение от цепочки инструментов: как компилятор берет некоторый источник и компилирует его в байт-код, который я затем запускаю с помощью виртуальной машины с правильно настроенным классом классов.

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

Ответ 13

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

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

когда я вернулся к затмению (из-за некоторых функций, не поддерживаемых в netbeans), с ним было намного легче работать. поэтому некоторая часть gui может быть просто добавлена ​​неинтуитивно, и новичкам определенно будет сложно с ней работать.

Ответ 14

  • Простота
  • чёткость
  • консистенция

Я мог бы написать его более подробно, но я думаю, что затмение имеет избыточный вес и слишком много ориентировано на функции - вместо простоты использования. ИМО, это касается как начинающих, так и профессионалов.

Ответ 15

Eclipse не имеет визуального конструктора для компонентов Swing.

Сравните это с Visual Studio, где:

  • нажмите "новая форма"
  • перетащите кнопки и текстовые поля в форму, переместите их, добавьте несколько меток.
  • дважды нажмите кнопку, добавьте код
  • сделано, одно быстрое приложение, показать его боссу, получить оплату/продвижение по службе/перерыв на кофе

В Eclipse вам нужно либо использовать Netbeans (т.е. не Eclipse...), либо использовать IBM SWT, либо вручную скопировать формы Swing.

Я чувствую, что было бы очень приятно иметь хорошего дизайнера форм wysiwyg в форматах Eclipse для Swing.

Ответ 16

Другая запутанная часть заключается в том, что для веб-разработки есть отдельная версия, которая должна использоваться! Ну, мне это совсем не понравилось, и я знаю, что многие люди просто не об этом.

Ответ 17

Eclipse пропускает Maven Embedded в стандартном дистрибутиве, Maven помог бы любому пользователю в получении своей программы всех банок и улучшенном управлении библиотекой. У Netbeans уже есть эти инструменты. Кроме того, eclipse пропускает интегрированные инструменты для спящего режима, spring, xfire и tomcat с использованием maven.

Проверьте этот сайт http://maven.apache.org/

Ответ 18

Все мои другие проблемы с Eclipse уже упоминались, кроме одного: это slooooooooow. Была ли их цель доказать, что "Ява медленная" люди права? Я предполагаю, что это связано с тем, что "Eclipse делает все", но я прекратил использовать его, потому что он лагов каждый раз, когда я нажимаю на что-либо. Изменить вкладки? Лаг. Открыть настройки? Лаг. Изменить вкладки в настройках? Лаг. Это похоже на использование Photoshop с 32 Мб памяти.


О, и это невероятно уродливо. Я хотел бы получить его с помощью реальной интеграции GTK +.

Ответ 19

Интеграция Android SDK полна jank. Макеты xml не отображаются правильно. Завершение кода не работает. IBM должна исправить ошибку.