2010-10-30 68 views
35

Objective-C中常量的命名约定是什么(或者最常用的命名方式)?如何在Objective-C中命名常量?

extern常数有不同的标准吗?

有些款式我看到:

NSString* const kPreferenceFirstRun = @"FirstRun"; 

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

回答

36

经过一番谷歌搜索,我找到了official coding guidelines for Cocoa。在ALL-CAPS有两个或三个字母的prefix

  • 开始
  • 安息UpperCamelCase
  • extern相同的标准常数

我同意:

综上所述与itaiferberk前缀风格更清晰d对自动完成更有用。知道这种风格是否比官方指南更受欢迎会很有趣。

+1

我认为双字母前缀vs k前缀的好处是双重的:1)双字母前缀可以让您轻松过滤你的自动完成选择只适用于你正在寻找的一组常量。2)在查看代码时,你确切知道常量来自哪个域。想象一下,如果您正在开发一个在Xcode中使用多个兄弟项目的项目,并且他们都使用k作为常量的唯一标识符 - 那么您会被困在所有兄弟项目中的所有常量列表中。或者,如果每个项目都使用自己的双字母域前缀,它变得更容易。 – memmons 2012-03-12 18:05:28

+0

非常有趣的一点,和非常有趣的答案。在每个头文件(MyClass.h)上声明常量会更好吗,还是最好有一个全局的.h文件(Constants.h或类似的)专门包含常量声明?我已经在许多C/C++项目中看到了这种最后的做法,为什么不在objC – voghDev 2014-07-17 08:10:35

+0

值得注意的是,很多Apple库都使用了kPrefixConstantNamingConvention。所以,无论你是去哪一种,都是基于个人喜好。我通常使用kPrefix,但我也倾向于避免使用全局常量,因此命名这些常量的距离变得不那么重要。 – 2015-11-12 12:57:27

5

这是在我看来,最好的做法是将名称大写的常量。 ,但可可核心开发人员似乎并没有分享我的意见))他们使用CamelCase常量

+39

也许可可核心开发人员不喜欢他们的代码在他们的发言。 – dreamlax 2010-10-30 10:41:43

+3

C中使用了全大写技术,因为它使宏(不是常量,宏)更加突出。因为宏在C语言中是一个非常危险的构造,所以这是一种非常有用的技术,因为它会吸引你注意可能出现的麻烦点。不幸的是,这个约定被错误地复制到了语言本身内置的具有完美的常量定义机制的语言中。 – Ferruccio 2011-03-10 19:35:02

+0

k非常容易识别,正如@hgpc所提到的,适用于自动完成。预处理器宏使用全部大写,因此单独使用它们也许更好。 – jpswain 2011-08-05 21:57:51