我读过这篇文章,“智能感知”和“生成代码”的部分:
http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html
您认为作者是对的吗?
我不同意Intellisense对程序员来说太糟糕了。 VS for C#用于“隐藏”另一个文件中的控件事件,但如果您对该语言有足够的了解,可以找到它们,并且可以手动修改它们。使用VS,我不需要记住我使用的所有.Net类。 我认为如果您使用IDE或记事本并不重要,但如果这些RAD工具存在并且是免费的......为什么不使用它们呢?
答案 0 :(得分:32)
不,我非常不同意这一点。
是的,我确实同意intellisense让我可以减少对象的数量增加。从某种意义上来说,我很笨,我经常对项目的复杂细节知之甚少,因为我大量使用智能感知。
例如,我可能会非常准确地抨击我使用的所有C ++类型的成员。我倾向于成为我的C ++项目的唯一VIM人员因此并不真正使用intellisnsee。在C#和VB.Net项目中,虽然我不能像我依赖intellisense一样精确地挫败成员。
但是有一个权衡。保持所有成员的头脑需要付出代价。在编写代码时,我专注于成员,而不是专注于算法。在C ++中编写算法时,我必须不断考虑特定类型的命名约定,或参数列表,byref或val的命名约定。在C#/ VB.Net中,我可以更自由地思考算法,因为IDE负责为我找到成员。
这是否意味着我很笨?不,它只是意味着我能够专注于我实际想要解决的问题。我觉得这会让我更有成效,因此更聪明而不是笨拙。
答案 1 :(得分:23)
它不会使聪明的人变得笨拙,但它会使愚蠢的人看起来更聪明
答案 2 :(得分:16)
不,现代编程工具和语言有助于程序员更少关注小事情,更多关注大局。
主要目标是设计可靠的软件。如果程序员不必担心记住课程的每一种方法,他们就可以花更多的时间来设计产品。
答案 3 :(得分:11)
我们的物理学教授总是说为什么要记住你可以查找的东西。他总是在考试期间在董事会上列出所需的公式。似乎是intellisense是相同的想法。不要记住对象是使用Count还是Length属性,而是让VS告诉我。
答案 4 :(得分:4)
不,它让我们能够更快地编写代码。在我看来,任何使编码过程更快,更容易和更简单的方法都是朝着正确方向迈出的一步。
答案 5 :(得分:4)
不是笨蛋,它让我们更快:)
答案 6 :(得分:2)
编程正在向前发展,以使程序员的生活更轻松,并使他更有效率。
抱怨我们不再编写汇编代码了......重要的是要知道它背后的重要概念和想法,但使用它会很奇怪(在大多数情况下)。
答案 7 :(得分:2)
我使用intellisense和生成的代码来加速开发,而不是因为我不知道我在做什么。因此,我不能同意使用它们会使你笨拙。
在尝试使用促进该语言开发的工具之前,我是那种尝试尽可能多地学习语言的人。在这方面,我必须同意马修琼斯的评论,即“工具不能让人笨拙......懒惰和缺乏驾驶。”
答案 8 :(得分:1)
我不这么认为。
Intellisense使区分大小写的拼写变得容易。
是MyArray.Count()还是MyArray.Size()或Length(MyArray)......?哪种返回类型又是一种特殊方法?对于像这样的事情,Intellisense每天在Google上节省几分钟。
答案 9 :(得分:1)
详细记忆不是软件开发中最重要的技能。最好是解决问题的能力和找到所需信息的能力。如果你在细节上投入更多时间,那么当下一个最伟大的语言诞生时你将会失去,但算法和模式仍然是相关的。
答案 10 :(得分:1)
问题当然是...... Intellisense是否使编程不再是熟练的专业?
答案 11 :(得分:1)
是的,我同意作者的意见。由于文章中提到的原因,Intellisense(以及许多其他Visual Studio功能)确实“让我们变得笨拙”。
这并不总是坏事。有时,提高效率比变得更聪明更受欢迎。挑战是取得适当的平衡。 :)
答案 12 :(得分:0)
完全没有。当智能感知列表弹出时,程序员每次都会搜索整个列表以找到他们正在寻找的功能吗?也许一开始,但通常你会继续输入,直到intellisense将列表缩小到使用向上/向下箭头和标签完成更快的程度。
如果没有intellisense,你可能需要更长的时间来编写代码,因为你对你正在使用的类有经验,并且鉴于你不熟悉它们会更长。它只是一个速度工具,可以快速记录所有可用的内容。
答案 13 :(得分:0)
当您按空格键时,作者似乎唯一具有IntelliSense的问题是自动完成,显然他没有意识到您可以在“选项”菜单中关闭。
虽然,他声称编码“已成为与IntelliSense的持续对话”......这没有任何意义,因为你仍然需要从列表中选择正确的方法!没有它,您只需在线搜索方法的名称,而不是即时搜索。
有趣的是,作者忽略了IntelliSense无法告诉您是使用StringBuilder
还是String
等等。
答案 14 :(得分:0)
它不会让我们笨拙;这是必要的。
回到当天(对我来说是MS BASIC),不需要intellisense。语言的范围有限,足以让程序员记住所有关键字和功能。
跳到今天,intellisense是一个绝对的要求。以.Net为例。根本没有办法记住或发现成千上万种类型,属性和方法。哦,当然,对于一个非常小的项目,你可能知道一堆(100s?)的项目。但是说实话 - 如果没有它,现代工作程序员就无法存在。
答案 15 :(得分:0)
在这里加上我的两分钱。
根据我自己的经验和TFA中提到的,我会说到目前为止我遇到的唯一缺点就是当你学习语言时,你可能会养成不良习惯。仅使用ArrayLists而不是List,因为您不知道更改use子句enable可能会为您提供其他一些数据类型。
作者抱怨他在输入某些数据类型时得到了错误的数据类型。虽然你们中的一些人可能会获得许可证,武器并开始搜捕,但我发现使用命名约定是强制智能感知工作的一种很好的方式,特别是在使用GUI-Control密集型表格和放大器时;东西。
答案 16 :(得分:0)
除了为较贫穷的数学家和物理学家制作的计算器之外,别无其他。当然,使用幻灯片规则会强制您保持事物数量级的心智模型,但它实际上只是一种工具......更好的工具可以让您做得更好。
答案 17 :(得分:0)
这可以被抽象为传统的问题:
了解更多有关细节的信息会有所帮助吗?
作为一项规则,经验丰富的工程师和工匠说,帮助。但是,了解详细信息还可以让您了解详细信息何时无关紧要,这就是Visual Studio / Intellisense提供的内容。 (我确信这里可以说一句简洁的谚语,但我不觉得想起来了。)
答案 18 :(得分:0)
有趣的问题。当然,我发现Intellisense在某种意义上使工作变得更容易,但它有点像金钱。你拥有的越多,你花的越多,不一定是你需要的东西。我学会了在62年左右开始编程,不知何故,我在没有智能感知的情况下相处很长时间。 Intellisense现在为我做的是帮助我记住很多班级和成员,就在4年前我从来不知道自己需要。
我在软件中看到过一种从未失败的趋势。大自然憎恶真空。机器越来越大,所以猜测一下,软件变大了(但并不总是更好)。机器变得更快,因此软件变慢。现在人们可以帮助输入长名称,因此代码变得非常冗长。现在人们可以帮助记住很多课程,所以猜猜看,还有更多的课程需要记住。这对于帮助软件变大和变慢有很长的路要走。
我做了很多性能调整,减速的主要原因是什么?由于数据结构过多,类太多,抽象层太多而导致过度设计导致的普遍性。总之,“臃肿”。 Here is just a small example.
答案 19 :(得分:0)
哑巴&懒。
答案 20 :(得分:0)
我发现Visual Studio的工具有助于进行更多实验。当您在C中处理Win32 API时(例如),您无法轻易解决问题。当您使用C#时,可以轻松地在图书馆周围进行一些探索,并了解它的作用,而不会在整个晚上打破MSDN或反汇编程序。
如果你是一个自然好奇的程序员,Intellisense不会改变它。如果你不是,Intellisense也不会改变它。用我的同事的一句话来说“我认为,如果你可以从网上采取实施并继续下一件事,那就是浪费时间查看大书。”
无论如何,这是一个古老的论点,在Intellisense之前。 BASIC是否会影响x86中写入的内容?当你将在你的角色中使用的每种编程语言都有一个久经考验的库时,是否知道一个与内部相关的算法?
我发现那些考虑编程爱好或技能的人倾向于理解和调查。那些把它当作日常工作的人却没有。不管它周围有什么样的问题,它更多地是关于程序员的心态而不是可用的。