【问题标题】:How to name a constant in Objective-C?如何在 Objective-C 中命名常量?
【发布时间】:2011-05-02 18:36:46
【问题描述】:

Objective-C 中常量的命名约定是什么(或最广泛使用的命名方式)?

extern 常量有不同的标准吗?

我见过的一些款式:

NSString* const kPreferenceFirstRun = @"FirstRun";

// Replace "XY" by a prefix representing your company, project or module
NSString* const XYPreferenceFirstRun = @"FirstRun"; 

【问题讨论】:

    标签: objective-c naming-conventions constants extern


    【解决方案1】:

    经过一番谷歌搜索,我找到了official coding guidelines for Cocoa

    总结一下:

    • 以两个或三个字母 prefix 开头,全部大写
    • 在 UpperCamelCase 中休息
    • extern 常量的相同标准

    我同意 itaiferber 的观点,即 k 前缀样式更清晰,对自动补全也更有用。想知道这种风格是否比官方指南更受欢迎。

    【讨论】:

    • 我认为双字母前缀与 k 前缀的好处是双重的:1)双字母前缀允许您轻松地将自动完成选择过滤到您正在寻找的常量组2)查看代码时,您确切地知道常量来自哪个域。想象一下,如果您正在处理一个在 Xcode 中使用多个同级项目的项目,并且它们都使用 k 作为常量的唯一标识符——您将被困在对所有同级项目的所有常量列表进行排序时。或者,如果每个项目都使用自己的两个字母的域前缀,它会变得容易得多。
    • 非常有趣的一点,非常有趣的答案。在每个头文件(MyClass.h)上声明常量会更好,还是有一个专门包含常量声明的全局 .h 文件(Constants.h 或类似文件)会更好?我已经在许多 C/C++ 项目中看到了最后一种做法,那么为什么不在 objC 中呢
    • 值得注意的是,很多 Apple 库都在使用 kPrefixConstantNamingConvention。因此,您是否选择其中一个主要取决于个人喜好。我通常使用 kPrefix,但我也倾向于避免使用全局常量,因此对这些常量进行命名空间变得不那么重要了。
    【解决方案2】:

    在我看来,最好的做法是以大写命名常量。 但 cocoa-core 开发人员似乎不同意我的观点))他们使用 CamelCase 作为常量

    【讨论】:

    • 也许 Cocoa 核心开发人员不喜欢他们的代码对他们大喊大叫。
    • C 中使用了全大写技术,因为它使宏(不是常量,宏)脱颖而出。因为宏在 C 语言中是一种非常危险的结构,所以这是一种非常有用的技术,因为它会吸引您注意可能的问题点。不幸的是,这种约定被错误地复制到语言本身中内置了非常好的常量定义机制的语言中。
    • k 非常容易识别,正如@hgpc 提到的,它非常适合自动完成。预处理器宏使用全部大写,因此单独使用它们可能会更好。
    • obj-c 中的所有大写常量都不是一个好主意,因为它通常是为#defines 保留的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多