我正在自学Objective-C,我在很多书和例子中注意到了在常量定义中'k‘和驼峰大小写的用法。
#define kMyConstant 0
“k”的意义是什么?这是Objective-C风格所特有的,还是一般C语言所共有的?为什么会偏离(我一直认为是最佳实践)的K_MY_CONSTANT风格?
谢谢。
发布于 2009-01-31 18:21:52
它之前在SO问题中提到过一次,Lower case "k" in Cocoa。
它是一个通用的编程符号,不特定于Objective-C (即匈牙利符号),"k“代表”常量“。
如果你看看谷歌的Objective-C指南的Google cache,你会发现他们曾经在他们的风格指南中包含了它:
常量名称(#定义、枚举、常量局部变量等)应该以小写的k开头,然后使用大小写混合的方式来分隔单词,例如kInvalidHandle、kWritePerm。
尽管编写起来很痛苦,但它们对于保持代码的可读性绝对是至关重要的。以下规则描述了您应该注释的内容和位置。但请记住:虽然注释非常重要,但最好的代码是自文档化。为类型和变量提供合理的名称要比使用晦涩的名称,然后试图通过注释来解释它们要好得多。
但后来它在文档的live version中被删除了。应该指出的是,它与苹果的Official Coding Guidlines for Cocoa背道而驰。
发布于 2009-01-31 18:18:20
所有大写字母(如在K_MY_CONSTANT
中)通常表示宏-不一定是常量。宏脱颖而出通常是很重要的,因为它们破坏了所有的名称空间。
在C/C++和其他语言中,'k
‘约定用于(但不是通用的)非宏常量。我怀疑使用'k
‘是因为'c
’已经经常使用了--要么表示类名(如CString
),要么表示变量是计数器。
发布于 2009-01-31 18:35:18
kMyConstant的事情可以追溯到非常古老的Mac编程时代(80/90年代是“非常古老的”)。这是Apple使用的标准,也是许多Mac程序员使用的标准;它取代了MY_CONSTANT-type定义。
我想您正在阅读的作者是Mac Pascal/C程序员,在成为NeXT/Cocoa程序员之前是旧的Mac Toolbox的程序员。Mac库过去被称为“工具箱”--这是一组API和库,随着时间的推移,这些API和库变成了碳。
我有时仍然在使用kMyConstant,这让我以前的Unix程序员同事发疯了。:-)
https://stackoverflow.com/questions/500030
复制