【问题标题】:Are there any useful naming conventions for *your* constant/static variable in Cocoa?Cocoa 中的 *your* 常量/静态变量是否有任何有用的命名约定?
【发布时间】:2010-05-26 13:51:13
【问题描述】:

我知道常量以k 前缀开头,但是有没有人有自己的常量前缀,所以他们可以很容易地完成他们的常量,而不是苹果的?

由于我的公司名称,我的班级使用三个字母的前缀,假设它是OMG。我尝试用omgkConstantName 为我的常量添加前缀,但这并不是很令人满意。我还玩弄了kkoko 来自 OMG。)或者我应该使用 kOMGConstantName,这看起来更像 Cocoa-ish?

快速获取您自己的常量似乎非常有用,就像您可能希望获取自己的类一样。有人这样做吗?是不是很糟糕的 Cocoa 风格?

另外,对于只在一个类中使用的静态变量,是否有良好的命名约定,例如 JSON 字典的键?他们应该有k 吗?它们应该以大写开头,还是遵循正常的大小写约定?

// Static Variables
static NSString *searchTextKey = @"searchText";
static NSString *searchResultsKey = @"searchResults";
(more)

【问题讨论】:

    标签: objective-c cocoa coding-style


    【解决方案1】:

    我尝试始终将kJAFoo(或kXXFoo,其中XX 是项目前缀)用于我的公共常量——尤其是导出符号的实际consts——但通常将kFoo 用于枚举或@987654325 @s 在实现文件中。同样,我对静态变量使用sFoo,在我使用导出全局变量的极少数情况下使用gJAFoo

    但是,这些情况都没有命名空间类(以及导入类的类别中的方法)重要,因为大多数类型的冲突将在编译或链接时而不是运行时出现。

    【讨论】:

    • 这或多或少是我的做法。虽然这是主观的。
    • 哦,这听起来非常清晰和逻辑。 k 用于constg 用于externs 用于static外部链接 带有 2 或 3 个字母代码。 Apple 甚至说您应该在外部链接变量(gk)中使用整个类名,而不是只使用字母代码。跨度>
    • 如何处理 static const?只添加 *k 然后 Pascal Case...kPoints
    • @Godric,kconstg 中的extern 中在哪里?
    • @IulianOnofrei k 和 g 作为前缀在许多框架中使用(g 几乎只在旧框架中使用),Apple 确实使用 k 作为前缀(有些 api 确实有它们,但我认为新的会赢) t 得到它们)。 Google 的指南确实鼓励您使用前缀。但我认为编码指南从前缀转移。 GitHub 上的第三方框架到处使用它们。全局变量很危险,很多人说你根本不应该使用它们,所以你不会真正看到 g 前缀,因为没有任何前缀。 Extern const 几乎一直都以 k 为前缀。
    【解决方案2】:

    Apple 的Coding Guidelines for Cocoa 建议对枚举使用与函数相同的命名约定。按照这个建议,OMGConstantName 是正确的。

    【讨论】:

      【解决方案3】:

      我通常将常量设为 Pascal 大小写。

      如果您选择遵循“命名空间约定”为所有内容添加前缀,那么您也可以使用它。

      所以我通常会这样做

      static NSString *SearchTextKey = @"searchText";
      

      你可以选择命名空间(假设你的前缀是 ZK)

      static NSString *ZKSearchTextKey = @"searchText";
      

      一般来说,我只会按照 google 的建议(或者至少在我确定我的命名约定时)为多个项目中使用的东西命名。

      不过,最重要的是,无论您选择哪种约定。坚持并保持一致(至少在给定项目中)。在某个时刻,第二次猜测自己只会浪费时间。

      【讨论】:

      • 完全同意一致性。我刚刚开始一个新的多 Xcode 项目项目,并有机会设置样式约定。我想我倾向于kOMG 作为前缀。我喜欢能够区分常量和类。
      【解决方案4】:

      我通常遵循与类相同的前缀/大写约定,所以 Cocoa 有 NSTouchPhaseBegan 的地方我可能有 GLTuneNameKey

      【讨论】:

        猜你喜欢
        • 2020-05-05
        • 2012-08-16
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 2011-11-07
        • 2012-09-13
        • 1970-01-01
        相关资源
        最近更新 更多