【问题标题】:Code-formatter for Objective-CObjective-C 的代码格式化程序
【发布时间】:2014-07-02 13:07:28
【问题描述】:

Similar 之前有人问过问题,但它们对我想做的事情没有帮助:

我想重新格式化现有的 Objective-C 代码(数百个文件)。对于纯 Apple 风格的格式,uncrustify 似乎可以满足我的要求。但是对于一些项目,我需要一种不同的风格,我还没有找到如何配置 uncrustify 的方法。在这种风格中,长方法调用看起来像这样(请不要讨论您是否喜欢这种风格;不建议使用其他风格):

[self
    longMethod:arg1
    withLots:arg2
    ofArguments:arg3
    aBlock:^{
       [self doSomething];
    }
    andAnotherBlock:^{
       [self doSomethingElse];
    }
];

当方法调用超过 80 或 100 个字符的行长度时,将完成此包装。每行缩进一级,并且只包含一个参数和选择器部分,直到对应的:。因此,这些行不是冒号对齐的。

如果行长度低于 80 或 100 个字符,则不进行换行:

[self shortMethod:withAnArgument];

是否有可以调整以支持这种风格的代码格式化程序?如果是这样,哪个更重要的是,如何

【问题讨论】:

  • 这个问题不是题外话,因为它与About page 中明确提到的开发工具有关(另请参阅meta.stackoverflow.com)。另请参阅on-topic page in the FAQs:这不是关于意见,而是关于事实:工具可以做到或不能。如果可以的话,我想知道怎么做。
  • 我回去重新阅读了指南,也无法想象这是多么离题。
  • 看到比纯 C 语言有 80 个字符的限制总是让我的眼睛受伤。由于 IBM 打孔卡而强制执行字符限制并且仅因为 C 中的函数名称不能超过 8 个字符而工作...对于 Obj-C,包装结果是一种非常奇怪的格式,我认为您不会找到支持它的格式化程序。格式越陌生,找到格式化程序的可能性就越小。
  • @Sulthan:看我的问题:请不要讨论你是否喜欢这种风格;不建议使用其他样式。这就像在 C 中讨论 K&R 与 Allman 风格一样无用。

标签: objective-c code-formatting


【解决方案1】:

Clang format 可用于以任意数量的样式格式化代码。您甚至可以指定所需的确切选项,或使用几种“标准”样式中的一种。

还有一个XCode plugin

【讨论】:

  • 但它是否支持所描述的格式?如果有,怎么做?
  • 好吧,这种格式对我来说很难看,所以我从来没有尝试过那种确切的格式:-)。但是,我知道它有指定换行样式和行长的选项。我还认为它可以根据冒号对齐或不对齐。它具有我所知道的最多的 Obj-C 格式选项,并且似乎匹配。但是,恐怕我不会花时间尝试调整选项以匹配确切的格式。
  • 所以我确实查看了 Clang 格式,但它对我没有帮助。事实上,它甚至不如uncrustify 有用,因为您可以调整的关于 Objective-C 方法调用的东西不多。
  • @JodyHagins 为了提高代码的可读性,您可以做的最好的事情之一就是停止使用内联块 :) 我花了好几年的时间才明白,为某事创建一个变量会使代码更具可读性,仅仅是因为事实上,您将添加一个“名称”。
  • @Sulthan 用几种不同的语言(包括 Obj-C 和 C++)双向完成。我发现,一般来说,内联块增加了代码的可读性。就像任何事情一样,它可以被滥用。所有工具都很有用。
【解决方案2】:

不,我认为这种风格没有代码格式化程序。您可以使用 clang 的 Lib Tooling 来完成这项工作。是的,您必须使用它构建自己的工具。但是,如果您想做一些非常不寻常的事情,开发自己的工具是通常的方式。

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 2010-10-24
    • 2012-01-17
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    相关资源
    最近更新 更多