【问题标题】:AnalysisTool / Clang results: ivar naming convention violationAnalysisTool / Clang 结果:ivar 命名约定违规
【发布时间】:2009-06-17 21:12:16
【问题描述】:

AnalysisTool(一个 Clang GUI 前端)指出我的一些 ivars 名称不正确:

具体来说:

实例变量的名称 'groupName' 不以 'm' 开头 前缀

'm'前缀在 Cocoa 中代表什么?

我应该使用它吗?或者这是误报。

【问题讨论】:

    标签: iphone objective-c cocoa cocoa-touch clang


    【解决方案1】:

    AnalysisTool 是一个前端 GUI,但也使用了一些不属于 Clang 的自定义规则。据我所知,Clang 不会强制/建议任何实例变量的命名约定,因此您所看到的可能是您可以放心忽略的内部编码风格(由 AT 开发人员使用)。详情请见this SO answer

    Clang Static Analyzer 本身现在可以作为 Leopard 的二进制下载,而以前您必须自己构建它,这既复杂又耗时。没有图形用户界面也很容易使用,而且报告总体上也很不错。

    【讨论】:

    • 我通常在 CL 中使用它。由于链接的静态库,我实际上遇到了问题,发现 AnalysisTool 能够绕过它们。但是“m”前缀上的任何输入?
    • 正如我所提到的,我认为这是硬编码到 AnalysisTool 中的约定。
    【解决方案2】:

    开发人员将其对象名称的实例变量以m_(“member”的缩写)开头是很常见的,您看到的规则表明您的代码不符合该约定。如果您不想在代码中遵循此约定,只需在分析器中关闭该规则即可。

    【讨论】:

    • 约定是 AT 的一部分,不是 Clang 工具的一部分。在我引用的 SO 答案的 cmets 中,AT 的开发人员承认有些人希望将其关闭,但他们的 GUI 工具的当前版本不支持该功能。
    • 另外,虽然开发人员通常会使用“m”或“m_”前缀,但我在 Objective-C 代码中并没有看到太多,这似乎有些不必要。由于大多数变量都是实例变量,因此我为静态/全局/常量使用前缀,并确保局部变量不会影响 ivars。 Xcode 有一些相当不错的工具来确定符号的声明位置(Cmd 双击它)和使用它的位置(单击它,使用带下划线)。
    • 我自己不使用约定,所以不要在分析器中检查它。 Google ObjC 编码指南需要它。每个人都有自己的:-)
    • 但是,在自动完成的时代,强制将大量变量索引到“m”或“m_”下会适得其反。它还带有匈牙利风格的符号 (strSomething, numSomethingElse) 的味道,出于同样的原因,它已经过时了:它出于错误的原因(可见性、类型)而不是正确的 OO 强制对变量和方法(getMSomething、setMSomething)进行分组原因(角色或责任)。
    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多