【问题标题】:Xcode 4 method braces "{" conventionXcode 4 方法大括号“{”约定
【发布时间】:2011-04-28 19:37:54
【问题描述】:

我在 Xcode 4 处于测试阶段时切换到它,并且我主要是在编辑现有代码,所以直到现在才真正考虑过这么多......

Apple 的文件模板似乎改变了编码方法的约定。例如,Xcode 4 之前的 dealloc 方法如下所示:

- (void)dealloc {
[super dealloc];
}

在 Xcode 4 中,他们现在使用这种样式:

- (void)dealloc
{
    [super dealloc];
}

作为一个狂热的完美主义者和易怒的人,这让我很生气!我是在 Xcode 本身的以前的样式中长大的,现在我发现自己每次创建一个模板时都会遍历每个模板,以便将括号放回正确的位置!

请告诉我这是我可以更改的默认选项...或者我是否必须更改自己的编码风格以匹配(或者更糟糕的是,“学会接受它”[颤抖]!)。

【问题讨论】:

  • 在while循环上做一个代码补全,你会看到左大括号前没有换行符。所以它混合起来,这实际上是 K&R 风格:en.wikipedia.org/wiki/Indent_style#K.26R_style
  • @Gustav:啊,真的。我一直很高兴地使用大量带有通常大括号的分支语句和循环 - 我只是在我的问题中错误地使用了样式名称。我会相应地编辑我的帖子。这些方法仍然困扰着我!如果不出意外,我会广泛使用代码折叠,但这种风格会降低效率。

标签: xcode methods coding-style conventions brackets


【解决方案1】:

我一直无法掌握 Xcode 缩进。相反,我最终得到了一个单独的脚本,该脚本调用uncrustify(用于 ObjC)或indent(用于纯 C)在每次提交之前清理代码。这样一来,我的编码风格(自然是唯一明智的)始终如一地(狂热地?)执行。

这也捕获了其他典型的 Xcode 烦恼,例如尾随空格,合理的代码编辑器会在节省时间时将其删除。

【讨论】:

  • 这听起来很有趣,我会研究一下。您是否需要主动运行脚本,或者它可以在您键入时自动为您执行?就个人而言,我有点担心同时批量更改数百个文件而不会看到发生的更改。你遇到过问题吗?
  • 不,不幸的是它只是脚本。您创建一个相当广泛的配置文件,指定您喜欢格式化的各个方面,然后运行它。我从来没有遇到过任何问题。可能最好在所有文件上运行一次以理顺事情并将其作为单独的“仅重新格式化”提交提交,然后在每次提交之前运行它以保持一致。根据您的 VCS,您可能可以将其作为提交操作的一部分运行。
  • 您也可以在 Xcode 中将其定义为宏,这样您就可以使用热键重新格式化文件(或者可能是选择)。手头没有确切的细节,但我相信谷歌有。 :)
  • 感谢您的指点。我可能会在某个时候将其视为解决方案。
【解决方案2】:

据我所知,没有可以更改的默认选项;但是:

如果您正在创建文件,您可以将/Developer/Library/Xcode/Templates 中的文件编辑为您想要的编码风格。

至于编辑器中的sn-ps,即单独输入dealloc时插入的,等等;这些似乎来自/Developer/Library/Xcode/PrivatePlugins/IDECodeSnippetLibrary.plugin

我不一定建议编辑那里的文件;但这是一种选择。

编辑:为了防止 Xcode 更新破坏您的完美模板,您可能可以chmod -w 它们,应该防止更新触及它们;但它可能会导致更新完全失败。

【讨论】:

  • 这很方便,谢谢。我不太担心代码 sn-ps - 当我输入一个冗长的方法名称(例如 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shoulderRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer)时,我让它完成方法的名称,但我总是自己做括号。困扰我的几乎只是模板,所以我可能会听从您的建议并手动更改它们,并希望未来的 Xcode 更新不会破坏我的更改。
  • 谢谢你,虽然我可能只是将编辑后的模板备份到某个文件夹中。我担心让自己陷入无法恢复的境地——我不是终端专家!
【解决方案3】:

我设置了这个github repo,用于共享固定模板文件,从而解决您的问题。

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 2017-11-08
    • 1970-01-01
    • 2018-11-16
    • 2017-09-10
    • 1970-01-01
    • 2011-03-23
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多