【发布时间】:2015-09-16 10:52:00
【问题描述】:
已询问如何将其关闭。但是有什么意义开始呢?毕竟 - 当我想在大括号(或括号)之后继续时 - 我必须按 some 键。那么我该如何利用它来为我谋取利益呢?
【问题讨论】:
标签: c# visual-studio visual-studio-2013 autocomplete ide
已询问如何将其关闭。但是有什么意义开始呢?毕竟 - 当我想在大括号(或括号)之后继续时 - 我必须按 some 键。那么我该如何利用它来为我谋取利益呢?
【问题讨论】:
标签: c# visual-studio visual-studio-2013 autocomplete ide
关键是,当您想在大括号之后继续时,您必须按一个键,如果该功能不存在则必须这样做。但是,当您想在大括号或括号内键入时,您不必键入另一个键,IDE 不会在您键入时抱怨缺少大括号或括号 [并且会正确缩进所有内容],您将能够立即开始打字。
另外,请记住,Visual Studio 支持的其他语言有时可以从该功能中获得更多优势。例如,Visual Basic 并不要求所有方法调用都包含括号:
// This is completely valid in VB
obj.Method1.Method2.Method3()
// So if you open a parenthesis, it is because you probably want to write
// something inside them, like this:
obj.Method1(argument).Method(argument2).Method3(argument3)
【讨论】:
write faster - 以什么方式?这是完全相同的键序列! syntatic sugar - 直到我关闭大括号并自动获取它! help the IDE - 现在你在说话! (虽然它实际上是相反的,如果有的话。但我喜欢这个主意:)
不同的人有不同的偏好,但代码编辑器中的此类功能可以让熟练的用户更快地编写代码。例如,在创建函数时,键入
void foo(){ <enter>
将创建以下代码
void foo () {
<cursor here>
}
允许您快速创建一些东西,而不必担心输入语言的语法(尽可能多)。 if、while 等也应如此。
和我一样,程序员往往很懒惰(Doh!>.
编辑:
有评论说这实际上并没有保存按键,所以我将尝试澄清我的意思。
定性:这就是我所说的“人们有不同的偏好”。有些人可能不关心这个功能,但有些人觉得它非常有用。有些人认为带有自动完成功能的编码感觉更加流畅......一旦你习惯了它,没有它就很难编码。
量化:考虑包装在命名空间中的以下类,无论是否自动完成大括号和制表符。
namespace MyNameSpace {
\t public class DoStuff {
\t \t private int myPrivate;
\t \t
\t \t public DoStuff() {
\t \t \t myPrivate = 73; // 0x1001001 yay palidromes!
\t \t }
\t \t
\t \t public int GetMyStuff() {
\t \t \t return myPrivate;
\t \t }
\t }
}
好的,所以如果所有的“\t”都是制表符,那么这是 22 个(我希望我能数出来!)制表符,最后是 3 个花括号,总共 25 次按键。不多,但对于这么小的文件和简单的功能来说还不错。
我真正喜欢大括号自动完成的地方在于,当它与更高级的功能和工具结合使用时会发生什么。根据您选择的 IDE,可能有许多工具不仅可以让您自动完成大括号和圆括号,还可以让您自动完成关键字、类型名称、标识符等。例如,如果您实现一个接口,则有一些工具可以 自动创建一个实现类shell(方法内部没有任何实现),这意味着您根本不必编写任何方法声明!
在我看来,有一种工具比纯文本编辑器更适合任何程序员。继续尝试 IDE 和相应的工具,直到 适合您,不要专注于按键的定量测量。
【讨论】:
a couple fewer key presses - 我从哪里获得的?
我觉得这个前提有点可疑。是的,在某些情况下,如果您想继续按顺序键入行,则自动大括号完成可能几乎没有收益。但是,我建议您(我)经常以非线性行编程。一些例子:
当您到达一个方法的末尾时,您通常会跳转到其他文件以继续,因此您不必添加方法的结尾大括号。
当您在方法内修改代码时,通常只需添加几行代码。
即使在创建新文件时,我也很少从空白文件开始,要么使用代码 sn-p,要么复制其他文件作为起点。此外,即使您从一个空白文件开始,您添加的前几行也可能是namespace { 和class {。对了,有两个右大括号不必键入,因为您可能不会在它们之后添加代码。
而且我敢肯定还有更多的例子。在我的脑海中,我猜我很少写连续的代码行。不过,那可能只是我。
【讨论】:
if { }、for { } 或其他类型的块。在这种情况下,您只需添加单个块并移动到其他地方。