【问题标题】:What is auto Automatic-Brace-Completion for?什么是自动大括号完成?
【发布时间】:2015-09-16 10:52:00
【问题描述】:

已询问如何将其关闭。但是有什么意义开始呢?毕竟 - 当我想在大括号(或括号)之后继续时 - 我必须按 some 键。那么我该如何利用它来为我谋取利益呢?

【问题讨论】:

    标签: c# visual-studio visual-studio-2013 autocomplete ide


    【解决方案1】:

    关键是,当您想在大括号之后继续时,您必须按一个键,如果该功能不存在则必须这样做。但是,当您想在大括号或括号内键入时,您不必键入另一个键,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)
    

    【讨论】:

    • 我理解你的第一点 - 防止出现波浪线。但第二个 - 我不明白你在说什么。
    • @ispiro 参考我的更新 :) 我想说的是:因为大多数时候在 VB 中你会想要在括号内写,VS 通过自动完成来帮助你右括号并将光标放在其中,这样您就可以立即开始输入。
    • 我也可以在没有自动完成的情况下做到这一点。击键甚至顺序都没有任何好处。
    • 但是你可以写得更快,更少考虑语法糖,并帮助 IDE :)
    • write faster - 以什么方式?这是完全相同的键序列! syntatic sugar - 直到我关闭大括号并自动获取它! help the IDE - 现在你在说话! (虽然它实际上是相反的,如果有的话。但我喜欢这个主意:)
    【解决方案2】:

    不同的人有不同的偏好,但代码编辑器中的此类功能可以让熟练的用户更快地编写代码。例如,在创建函数时,键入

    void foo(){ <enter>
    

    将创建以下代码

    void foo () {
        <cursor here>
    }
    

    允许您快速创建一些东西,而不必担心输入语言的语法(尽可能多)。 ifwhile 等也应如此。

    和我一样,程序员往往很懒惰(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 - 我从哪里获得的?
    • @ispiro 可能你不会在任何地方获得这一点,除非你必须按下一些东西以便在按下右大括号后缩进你的代码。但请记住,我们不是机器人,我们在编码时不会在脑海中计算我们按下的每一个键。问题是自动完成打字对某些人来说感觉更流畅,这对他们来说已经足够了。
    【解决方案3】:

    我觉得这个前提有点可疑。是的,在某些情况下,如果您想继续按顺序键入行,则自动大括号完成可能几乎没有收益。但是,我建议您(我)经常以非线性行编程。一些例子:

    1. 当您到达一个方法的末尾时,您通常会跳转到其他文件以继续,因此您不必添加方法的结尾大括号。

    2. 当您在方法内修改代码时,通常只需添加几行代码。

    3. 即使在创建新文件时,我也很少从空白文件开始,要么使用代码 sn-p,要么复制其他文件作为起点。此外,即使您从一个空白文件开始,您添加的前几行也可能是namespace {class {。对了,有两个右大括号不必键入,因为您可能不会在它们之后添加代码。

    而且我敢肯定还有更多的例子。在我的脑海中,我猜我很少写连续的代码行。不过,那可能只是我。

    【讨论】:

    • 1 - 是的。 2 - 那必须是您正在谈论的括号;至少在 C# 中 - 我仍然必须添加分号,所以我还必须“添加”右括号。 3 - 我不明白你的意思。
    • 好的。我看到你的编辑。但我很少从一个空白文件开始(正如你提到的),因此我不必输入这些。
    • @ispiro 对于 2,我是说在很多情况下,您会进入一个方法并添加一个 if { }for { } 或其他类型的块。在这种情况下,您只需添加单个块并移动到其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多