我正在自学Objective-C,我注意到在很多书籍和示例中,常量定义时使用了'k'和驼峰命名法,例如:
#define kMyConstant 0
'k'的意义是什么?这个习惯是Objective-C独有的,还是在C语言中普遍存在的?为什么要偏离(我一直认为是最佳实践的)K_MY_CONSTANT风格?谢谢。
我正在自学Objective-C,我注意到在很多书籍和示例中,常量定义时使用了'k'和驼峰命名法,例如:
#define kMyConstant 0
'k'的意义是什么?这个习惯是Objective-C独有的,还是在C语言中普遍存在的?为什么要偏离(我一直认为是最佳实践的)K_MY_CONSTANT风格?谢谢。
在SO的问题中曾经提到过,Cocoa中的小写"k"。
它是一种通用的编程表示法,不特定于Objective-C(即匈牙利标记),其中"k"代表"常量"。
如果你查看Google缓存版的Google Objective-C指南,你会发现他们曾经将其包含在样式指南中:
常量名称(#defines、枚举、const局部变量等)应以小写k开头,然后使用混合大小写分隔单词,例如kInvalidHandle,kWritePerm。虽然写起来很痛苦,但它们对于保持我们的代码可读性至关重要。以下规则描述了您应该在何处进行注释。但请记住:虽然注释非常重要,但最好的代码是自我说明的。给类型和变量起合理的名称比使用晦涩的名称然后尝试通过注释来解释它们要好得多。
我想你正在阅读的作者以前是Mac Pascal / C程序员,之后成为了NeXT / Cocoa程序员。 Mac库曾经被称为“Toolbox” - 这是一组API和库,随着时间的推移变成了Carbon。
我有时仍然会使用kMyConstant; 这让我的老派Unix程序员同事感到不舒服。 :-)
全大写字母(如K_MY_CONSTANT
)通常表示宏 - 不一定是常量。宏通常需要突出显示,因为它们会覆盖所有命名空间。
在C/C++和其他语言中,'k
'约定用于非宏常量,但并非普遍适用。我怀疑 'k
' 之所以被使用,是因为 'c
' 已经经常被用来表示类名(如CString
),或者表示变量是一个计数器。