Eclipse作为一个集成开发环境 - 作为Java初学者,你觉得缺少什么?

16
我正在开发一个解决方案,旨在解决新手程序员在修复错误/处理更改请求时在生产环境中修改代码时遇到的问题。众所周知,Eclipse是一款很不错的IDE。诸如代码完成、打开声明、类型层次结构、包资源管理器、导航器、查找引用等功能可以帮助人们更快地修复问题,相比于像Textpad这样的工具。

如果你是一位新手Java程序员,并且正在使用Eclipse IDE,你认为哪些方面会让人感觉不够有帮助或不够直观?如果你是一位经验丰富的程序员,新手们通常向你求助的常见问题是什么?

请忽略与以下相关的问题:领域专业知识(业务知识)、基础设施(在哪里测试您的更改等)、性能相关(例如Eclipse搜索速度慢等)、特定语言的技能水平(把开发者看作是新手)……并且只考虑一种语言 - Java。

我在我的小团队中进行了一项本地调查,以下是一些结果:

  • 使用Eclipse来处理运行时提供实现的接口代码的新手。做“打开声明”操作将始终显示一个接口,这可能有时会让人感到困惑。
  • Eclipse在开发EJB时不够直观。当然,你知道创建新bean的所有步骤只需右键单击并选择“创建bean”,但是一旦创建后,它没有显示下一步应该是什么的上下文帮助,例如生成存根。
  • 在使用实体bean进行数据源映射时,更改某些内容会捣乱整个流程,而且Eclipse没有报错或提示。
  • 开发使用Struts的应用程序时,Eclipse不会告诉您更改struts-config.xml文件时特定的Web流程会受到影响。

目前,作为一个对收集意见感兴趣的人来说,对我来说,似乎Eclipse可以增加更多'上下文运行时提示'。

我相信社区还有很多需要补充的地方......请继续分享更多负面经验(仅从代码更改的角度出发)。

编辑:

我想我的问题可能太冗长且令人困惑了,我现在会重新表述一下并简化它:

当“进行代码更改”时(不是指代码格式化、基础设施相关活动、CVS等等...比如重构),你最不喜欢/最讨厌eclipse IDE的哪些功能?以下是一些示例:

  • 修改已编写接口的代码时:“打开声明/F3”会显示运行时提供实现的接口的对象实例。
  • 更改使用EJB的应用程序时:没有上下文帮助。
  • 更改使用MVC(Spring/Struts)的应用程序时:没有有关变更影响的警告。

我非常讨厌那个,但现在我正在使用CTRL+G,它很好用。对于MVC,有一些插件可以帮助你,我想Eclipse无法处理所有框架来支持它们。 - Trick
19个回答

17

在Eclipse中缺少的功能有:

软件可视化,例如System Complexity View [Lanza 2003]

还有Lanza提供的Class Blueprint [Ducasse 2005]

附: Eclipse中的软件可视化:X-Ray提供Java项目的系统复杂性视图,http://xray.inf.usi.ch/xray.php(来自@anjaguzziPaul Lammertsma

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 Strathcona为正在开发的代码片段提供源代码示例和结构上下文。http://lsmr.cpsc.ucalgary.ca/papers/holmes-icse-2005.pdf Rascal基于对现有类的分析,使用协同过滤来推荐何时以及如何调用来自常见库(如Java Swing)的对象的方法。http://dx.doi.org/10.1007/s10462-005-9012-8 当然,我还可以编写单元测试,然后IDE会搜索互联网上传递测试的类的功能。是的,这是可以完成的! CodeGenie是一个Eclipse插件,它允许您编写单元测试,然后使用Sourcerer源代码搜索引擎查找通过的类。http://doi.acm.org/10.1145/1529282.1529384 CodeConjurer基于Merobase,也提供了该功能,请参阅http://dx.doi.org/10.1109/MS.2008.110。这个列表可以继续下去,更多工作的好起点是过去的会议记录: - Mining Software Repositories(MSR)会议:http://msr.uwaterloo.ca/msr2010/index.html - Search-driven Software Engineering(SUITE)研讨会:http://scg.unibe.ch/wiki/events/suite2010 - Recommendation Systems for Software Engineering(RSSE)研讨会:http://sites.google.com/site/rsseresearch/rsse2010,这些都属于ICSE会议的大伞下。

1
系统复杂性和类/包依赖关系都可以通过X-Ray插件添加到Eclipse中:http://xray.inf.usi.ch/xray.php。虽然官方仍处于测试阶段,但功能非常出色! - Paul Lammertsma
这些是新手程序员经常遇到的问题吗? :) - Rob Grant
@robert 我的建议是具有远见卓识而非渐进式的。如何从A类型到B类型是新手经常面临的问题,编写测试来搜索可能会对他们有很大帮助。 - akuhn
它们是很好的建议,毫无疑问;对另一个问题的很好回应 :p - Rob Grant

5
对我来说,Eclipse中大多数新手问题都源自它的优点之一:可配置性和插件结构。
当我需要更改Eclipse中的属性时,我总是需要花费几分钟时间弄清楚在哪里更改。例如:将Java编辑器更改为插入4个空格而不是制表符。属性中的搜索栏总是受欢迎的 :-)
这和某些插件缺乏文档总是会让我在设置项目时感到有趣。
编辑:您可以使用ctrl-T显示实现接口的类。
我想要补充的一件事是,当我有一个复杂的项目时,我倾向于经常使用“刷新”和“项目->全部重建”。而且我使用TortoiseSVN来在Eclipse外操作东西,因为有很多时候这样更容易(例如某些重构)。但是,如果我在Eclipse外修改项目,则始终“退出”Eclipse,并在重新启动时进行完全刷新和构建。否则,Eclipse有时会变得非常混乱。

5

我看到了一些“新手问题”(我已经使用Eclipse有一段时间了,但偶尔还是会被“惊吓”),并帮助那些刚开始使用Eclipse的同事:

  • Eclipse非常庞大和复杂,对于一些人来说一开始可能非常令人畏惧。似乎人们认为Netbeans更容易使用。我的一个同事曾经在VI编辑器里避难了一段时间...
  • 安装插件可能有些棘手(找到站点URL、意识到插件、为什么“安装”和“更新”在帮助菜单下?)
  • 虽然Eclipse 3.5/Galileo比以前要好得多,但更新仍然很慢。有时仅凭插件名称就难以理解应该安装哪些插件。
  • 除了Mac之外的任何平台-首选项在窗口菜单下似乎不合逻辑?
  • 了解如何整洁地设置项目类路径。设置正确的项目JDK版本。
  • ant/maven构建工具的类路径与Eclipse的互动缺乏或出乎意料(当共享类路径时,ant/maven clean导致Eclipse编译器错误等)。
  • 视图和(大量的)透视图一开始很令人困惑/不知所措。哪些是有用的?如何将视图拖到所需位置或还原关闭的视图?
  • 某些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配置文件中)。

让所有这些组件相互协作并进行检查/编译,然后稍后进行编译/运行测试/检入是困难的部分。代码本身可能很容易 :)


+1,这太正确了,特别是对于Spring和Maven。SpringSource Tool Suite(http://www.springsource.com/products/sts)提供了一些便利,但仍然有很多缺失。 - Ice09
M2eclipse最近变得非常好用。运行良好。 - Thorbjørn Ravn Andersen

3

对我来说,学会有效使用Eclipse的最大障碍是理解在哪里设置类路径以及如何确定开发不同阶段(编译、构建、测试)包含在类路径上的内容。我长时间困惑于编译时、调试配置和运行配置类路径之间的区别。如果再加入Ant(自动创建运行配置),这对新手来说更加令人困惑。


这有点类似于基础设施(设置/构建相关)。假设你的类路径正确,当你要更改一个方法/类或其他内容时,你发现它很困难吗?(例如,当你要更改一个方法名时,在eclipse中右键单击并查找引用是一件直观的事情 - 当我是新手时,这是使用eclipse的积极原因之一。今天,我来收集所有的负面意见 :-)) - Jay

2
作为一个初学者,我没有做过EJB或Struts相关的东西。甚至没有数据源映射。所以我认为问题的标题可能有点误导性。
我希望能够像JadClipse一样内置一个工具,当我在调试或其他操作中遇到库代码时,可以“查看”它。但是必须非常明确地指出,这是“重构的代码”,不应该被随意修改。
其次,新手需要更加清楚地知道Shift-F2将为他们提供任何类/方法的API文档。我认识太多只使用代码自动完成来探索API的初级Java程序员;他们错过了许多由库作者提供的有价值的提示。

同意缺少反编译器。 - Dean J

2
一个能够实时生成代码的心灵读取者,只需点击一次即可完成项目。

2
我发现Visual Studio很容易上手,我至少试了一下每个按钮,并弄清楚了整个软件的功能。它是由一个高水平的设计团队设计的,所有东西基本上都遵循标准。
然后,我尝试使用Eclipse。从技术角度来看,它最多只能算得上勉强能用。看看首选项对话框;除非你已经知道你要找什么以及开发人员决定如何称呼它,否则它就是一个令人不知所措的灾难。
Eclipse的可配置性取决于您已经知道如何配置它。学习曲线很陡峭,唯一的救赎是大多数默认设置都还可以。

2
以下是我所知道的基本缺失功能:
  • 当您在视图之外时,显示开始的“{”和结束的“}”
  • 自动将编辑器与包资源管理器同步
  • 使用键盘切换到不同的视图(包资源管理器、大纲等)
  • 内联查找,无需打开对话框。
  • 使用键盘跳转到下一个错误位置
  • 使用键盘跳转到下一个/上一个结构
  • 总体更加稳定
这些功能在IntelliJ中表现得非常出色。特别是#1和#5非常有用。

2

最近我刚开始接触eclipse,主要用于Android和BlackBerry开发。到目前为止,有一件事至今让我困扰着,那就是海量的选项和设置以及它们出现的各种不同位置。

例如,如果你安装了一个插件(比如BlackBerry插件),这个设置可能会在通用偏好设置或BlackBerry偏好设置或项目偏好设置中找到。

总之,它总是一个寻找过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接