依赖于IDE。怎么会伤害我?


27

我是高度依赖IDE的开发人员(因为我是JAVA开发人员,因此是NetBeans和Eclipse)。如果我有IDE,则可以正确编码。我可以在很大程度上依赖于此进行开发,调试和部署。但是如果没有IDE,我将无能为力。可以编写一个简单的hello world程序或一些简单的UI安排,但是我需要一个IDE来完成复杂的事情或对简单的事情进行长时间编码。

你觉得这对我有害吗?一些具有6年以上开发经验的程序员强烈认为这可能会造成危害,但是我认为,如果我能够快速正确地完成一些复杂的事情,为什么我应该坚持使用记事本和命令行工具来执行耗时的任务? IDE是否单击按钮即可执行此操作?


29
不想将其添加为答案,但是成为Java(仅)开发人员可能会损害您,甚至很多。学习一种真正的语言,不要仅仅因为使用劣质程序员会更便宜而成为使用Java的千篇一律的代码猴子。请?
泪论2011年

5
这对我来说是一个有趣的问题;除了Emacs或Vi,我从未编程过。结果,我不知道IDE会为您提供什么,您甚至可能会依赖它。
kasterma 2011年

8
@kasterma让我看看:代码帮助,重构工具,代码概述,调试,参数化调试,堆栈跟踪,参数监视,解决方案结构,rad,intellisense,代码段,编译和编译器错误辅助,标准执行,快速入门模板,语法突出显示以及更多;-)
Syg 2011年

2
我认为@Lacrymology接近另一点:Java依赖于IDE。尝试学习大多数程序员不使用IDE的语言,例如Python,Scheme或Common Lisp;这将为您提供一种新技能,并有时使您脱离IDE。
JasonFruit 2011年

7
@Lacrymology:Java 依赖于IDE,而是最流行的语言之一。我觉得这令人震惊,您认为它不够“真实”。
乔什(Josh K)

Answers:


15

正如其他人所说,在您的IDE中比没有它更快是很好的。能够正确使用复杂工具来提高生产率是一项重要技能。

但是,对IDE的过度依赖可能会导致问题。您不再运动的技能和知识将消失,并且您对某些方面的理解可能很浅。一个经典的示例是在命令行上编译和运行-几乎每次执行此操作时,我都会出错(通常与类路径有关),因为99%的时间让Eclipse为我完成。

当您退出IDE时,这不仅会影响您-如果您对IDE所隐藏的复杂性的了解很浅,那么当它出问题(有时会出问题)时,您会发现它很难修复。

我通过两种方式处理:

  1. 学习最基本形式的新工具。例如,我从SVN切换到Mercurial,但是从命令行客户端而不是Eclipse插件开始。这使我对发生的事情有了更深入的了解,这意味着我知道发生了什么问题以及在IDE抛出错误时如何解决它。

  2. 在命令行上练习基本的编码技能。做到这一点的一个好地方是CodingBat,在这里您没有语法高亮显示,没有括号匹配,没有红色下划线,什么也没有。不过,不要忘记也要练习那些Java和Javac命令行技能!(以及适合您工作流程的其他任何内容-对我来说,这还包括hg和ant)

最后,不必担心太多。这是不太可能你永远要做的一大块的工作没有任何的NetBeans或者Eclipse,所以只要你没有他们的编码,并了解什么的IDE为你做的,这不要紧,你”没有它,速度会变慢或犯更多错误。


2
作为一种爱好,花时间和脑细胞来了解底层细节很有趣。在商业上,它失去了很多价值。最好把时间花在学习业务上,然后以IDE提供的额外效率来实施。
Brian Knoblauch

CodingBat现在具有语法突出显示。
masterxilo

29

不,我认为实际上是相反的方式。IDE消除了(通过智能感知)让您真正了解框架的必要性,并简化了原本您并不在乎的繁琐/重复/复杂的任务(调试,部署)。这使您可以专注于解决眼前的业务问题。熟悉并了解IDE确实可以帮助您更快地编写可维护的代码。

当然,成为开发人员不仅仅如此。作为开发人员的经验可帮助您将正确的解决方案应用于遇到的问题。我认为这是真正的技能。


2
+1代表智慧!当人们看着他们在程序中键入每个字符时,我会为他们感到抱歉,而Intellisense会大大加快速度。
大卫,

8
这对我们其他人来说称为自动完成:)
mhitza 2011年

4
@David:看到人们键入两个字符,然后等待半秒钟让自动完成弹出并询问他们真正的意思,这让我很痛苦。然后,它们将转移到鼠标并滚动可用的选择,直到最后单击其中一个。不,自动完成不是天赐之物,甚至不是真正有用的东西。这是懒惰的工具。
Josh K

1
@Josh K:是的。自动完成功能可以使糟糕的程序员变得更糟,但也可以帮助优秀的程序员提高效率。:)
David

2
@Josh但是可以肯定的是,要完成intellisense / autocomplete还有更多的方法名称?内联方法描述(做什么以及需要使用什么参数),可用方法重载,对代码段的访问,可以覆盖哪些方法的了解等等。它发现它确实很有帮助,与懒惰无关。
Syg 2011年

24

不,它不会“伤害”您。当然,您应该了解没有 IDE的情况下的工作原理(例如,您应该了解基本的编译过程等),但是不要自欺欺人……如果IDE使您比不使用IDE更有效率,那为什么不呢?你吗


17

依赖IDE具有以下风险:

  • 您最终创建了需要特定IDE和版本的软件版本。
  • 您迫使团队中的其他人使用该IDE来构建系统。
  • 您无法轻松实现软件构建的自动化。
  • 您不知道您的软件依赖项是什么。

因此,请确保您也可以从命令行构建软件。例如,在Java中,请使用maven或ant。然后,您可以减轻上述风险。

其他IDE依赖风险:

  • IDE会在代码中标记错误和警告,并为您提供快速修复。这些可能不合适-可能存在设计或需求问题。
  • 您会忘记基础知识-您需要了解所选语言的基础知识,以便您能熟练掌握它,并能在面试中传达熟练程度。
  • 您最终陷入了IDE沙坑中-害怕尝试任何新事物或IDE不支持的任何事物。例如,您的IDE可能具有相当广泛的搜索和替换功能。但是,与grep和sed等命令行工具的功能和速度相比,这些都没有。您可能不进行Android开发,因为您选择的IDE(例如netbeans)不能很好地支持它。
  • 有些IDE无法处理大文件-例如,尝试在Eclipse中打开大服务器输出文件。它会永远和/或耗尽内存。

3
我同意您的观点,但我认为这不能解决真正的问题。例如,询问者不仅依赖于Netbeans。如果他/她是真的,那么所有这些观点可能都是正确的,但是据我所知,这个问题只是一般使用IDE,而不是基本的文本编辑器和命令行。
jzd 2011年

2
我的答案中提到的IDE实例仅仅是IDE依赖可能带来风险的示例。我没有特别指出Netbeans或Eclipse。
科纳(Conor)

我在工作中使用Netbeans,但是我手工编写了所有Ant脚本,因此任何人都可以在不需要Netbeans的情况下构建项目。我喜欢编辑器功能并且可以轻松浏览代码,但是我会尽我所能使它独立于IDE。
jonescb

9

使用您选择的工具提高生产力没有错。但是,如果您不能没有它,我将对您的内在知识非常怀疑。

不要放弃IDE。但是不时尝试仅使用浏览器上的编辑器和文档来做几个“简单”的类。

请记住,比最好的工具更快的是不必使用它们。


如果我没有IDE,我不会停下来(40%的情况),但是如果我没有IDE,我的速度将会大大降低。为了用IDE进行十分钟的任务,当我的ide崩溃时,我已经用记事本和javac呆了一整天。
Prasham 2011年

好吧,记事本太低了。尝试使用程序员的编辑器,例如notepad ++。可以将其视为一种练习:虽然不好玩,但是如果定期进行,会使您变得更好。
哈维尔

4

但是如果没有IDE,我将无能为力。

我需要一个IDE来完成复杂的事情或对简单的事情进行长时间编码。

您可以解决该问题。

您实际上可以学习该语言和框架。

没什么能阻止你的。

当然,除非您吹嘘要依赖于IDE。

当IDE单击按钮时,为什么我应该坚持使用记事本和命令行工具来执行耗时的任务?

是无关的。“粘到记事本” “没有IDE我什么也不能做” 完全无关。在记事本中什么也不做,就像粘在记事本上一样。哪有


3

您并不是那种“依赖”的人,因为您的两个IDE都是开源的,所以它们不会消失或被意外“改进”到无法使用的地步。而且,您选择的语言不会给您任何选择-您依赖于成千上万个库,并且在有IDE可以帮助您时记住所有不重要的东西只是愚蠢的。Java冗长,冗长,如果没有能够利用冗余冗长性的智能工具,您将无法高效工作。


对于其他语言,您也会说同样的话吗?(我在考虑使用PHP),但我不确定一般情况下它是否是一个好的建议。JAVA在这里可能是个例外
Quamis 2011年

1
我想对C#说同样的话,对PHP也是如此。语言和问题域的任何组合(必须使用大量不同的库)都需要智能工具。某些语言功能强大且表达能力强,可以在没有大量库的情况下使用-您可以在没有IDE的情况下编写简单的代码。有些语言即使在最简单的情况下也总是需要帮助。当我用Lisp编码时,我对emacs甚至CLI REPL都没问题。当我使用C#或Java进行编码时,如果没有不错的IDE(msvs或eclipse),我将不会做任何事情。
SK-logic

但是对于组织不佳(或命名)的对象成员,是否应该“智能”或“表单设计者”的警惕?我观察到,经常使用智能感知的人们倾向于为对象/函数/变量使用更长和更冗长的名称,从而使这些名称起初更难以记住。我是否应该知道这也是一个好习惯?
Quamis 2011年

Quamis:是不是相反?必须键入使得您选择的短名称不像长名称那样描述类/方法。
DistantEcho 2011年

@Niphra:是的,我个人更喜欢使用短名称:)我认为使代码更易于阅读。我正在尝试基本保持简短,我看不出有什么问题。
Quamis,2011年

3

我认为,过分依赖IDE来为您生成代码时,过度依赖IDE会带来危害。NetBeans和Eclipse都对它们不太了解,这对IMO来说是一件好事。另一个危害是如果您只知道一个IDE而不能使用其他IDE。一些公司有规定您使用什么的政策。不管是好是坏,这就是事实。

我认为,如果一个IDE不会使你富有成效,这是不值得的。例如,我使用JetBrains IDEA的工作效率最高,但是Eclipse已经走了很长一段路,我可以在此方面非常有效。Eclipse也已经适应了广泛的用途-这是双重好处。尽管我可以在VIM或其他一些文本编辑器中使用它,但是我发现在大多数当前的IDE中还有其他功能是不可替代的,例如重构支持。


2

我认为您不会帮自己任何忙。当然,您正在使用Eclipse,它是免费提供的,并且可以在有JVM的任何地方运行。但是我遇到过这样的情况,我不得不通过没有X服务器的终端会话远程访问另一台机器,这意味着我不得不使用像vi这样的纯文本编辑器并在命令行上进行构建。我还在这样的环境中工作:开发网络与世界其他地方在物理上是隔离的,并且它与公共网络之间的所有传输都是通过物理媒体进行的。我们在该网络上拥有Eclipse的唯一原因是因为它首先经过了多层批准。

我在命令行环境(VAX / VMS)中使用C和Fortran 77,所以我发现需要 IDE 的想法有些可疑。但是,与Java的野兽相比,这些语言很小。鉴于您需要一部叉车来随身携带最新的Java Nutshell书籍,所以我可以看到拥有可用的IDE如何使生活变得更加轻松。


2

它可能不会真的“伤害”您,但是如果您也熟悉做事却没有 IDE的。不要害怕扩大视野。

请记住,大多数开发工具都是首先写为命令行工具的。IDE是事后的想法,这很好。另一方面,您经常会发现一些“隐藏的gem命令行开关”或“高级技巧”,如果您保持指向并单击的话就永远找不到。

因此回答“如何伤害我?”这个问题。我认为,当您如此沉迷于它时,以为所有命令行工具都比单击按钮要慢,以至于您避免学习命令行工具(这是起源),这会对您造成伤害。

这就像以程序员的身份学习汇编程序一样,今天我们很少有人手工编写汇编程序,但是我相信了解汇编程序的人无论使用哪种语言,都是更好的程序员。


2

依赖计算机已经很有害。我总是用一块大石碑和一把锤子做的腰带编程。代码花了一段时间才能解决,但是当您完成一个特别大的方法时,通常会吃点东西。在那儿,我试图独立于超市和诸如此类的东西,所以我在家种所有小麦,然后就吃。当然,小麦种子和水的供应商几乎吸引了我,让我认为没有办法摆脱这种依赖周期。

认真地说:如果<disclaimer>您使用IDE,</disclaimer>但发现自己没有IDE,并且必须进行编程,则应该考虑一下自己的游戏,

  1. 致电IT或
  2. 如果您是IT人员,请自己解决问题

您不仅不应该使用您认为没有必要的任何工具进行编程,而且不能将牙膏用作导热膏。


1

依赖IDE可能不一定会对您造成伤害,但是在没有您选择的环境的情况下进行操作是一项至关重要的技能。

IDE可以阻止您学习通常不重要的“小事情”,并且可以避免不必要的打字/样板操作,从而帮助您更快地完成工作。通常,您还可以解决出现的问题,例如拼写错误的函数。

学习任何语言/框架/等时,我个人的规则是先学习困难。然后,一旦我掌握了它,我就跌倒了,我获得了以简单方式进行此操作的权利。关键是,如果您不了解其中的一些细微细节,当下水道主管开始从厨房水槽中喷出垃圾时,您将是SOL。如果您知道潜在的潜在操作是什么,则可以解决该问题或完全杜绝该问题。


0

让我们尝试一个好的文本编辑器,例如MS-Windows的PSPad(免费),Mac OS X的TextMate,GNU Desktop的Geany(开源)或KDE的Kate(开源)。

几年前,用于MS-DOS的MultiEdit4.0改变了我的生活,从那时起,我对文本编辑器非常敏感。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.