常量的k前缀来自哪里?

时间:2011-02-16 12:49:51

标签: c++ objective-c c prefix hungarian-notation

常见的做法是常量以k为前缀(例如k_pi)。但是k是什么意思?

只是c已经意味着char

8 个答案:

答案 0 :(得分:67)

这是一个历史上的奇怪现象,在喜欢盲目应用他们不理解的编码标准的团队中仍然是常见的做法。

很久以前,大多数商业编程语言都是弱类型的;自动类型检查,我们现在认为理所当然,仍然主要是一个学术主题。这意味着很容易编写带有类别错误的代码;它会编译运行,但却以难以诊断的方式出错。为了减少这些错误,一个名为Simonyi的小组建议您使用标签开始每个变量名称以指示其(概念)类型,从而更容易发现它们何时被滥用。由于他是匈牙利人,这种做法被称为“匈牙利符号”。

一段时间后,随着打字语言(特别是C)变得越来越受欢迎,一些白痴听说这是一个好主意,但不明白其目的。他们建议为每个变量添加冗余标记,以指示其声明的类型。它们的唯一用途是更容易检查变量的类型;除非有人更改了类型并且忘记更新标签,否则他们会非常有害。

第二种(无用的)形式更容易描述和执行,因此被许多团队盲目采用;几十年后,你仍然不时地看到它被使用,甚至提倡。

“c”是“char”类型的标签,因此它也不能用于“const”;所以选择“k”,因为这是德语中“konstant”的第一个字母,并被广泛用于数学常数。

答案 1 :(得分:22)

我没有看到那么多,但也许它来自某些语言(特别是德国语言)拼写单词常量 - konstant

答案 2 :(得分:4)

我认为数学惯例是先例。 k在数学中一直用作一些常数。

答案 3 :(得分:4)

不要使用匈牙利表示法。如果你想让常数脱颖而出,那就把它们全部加盖。

作为旁注:Google编码标准中有很多内容都是不好的做法(在代码可读性方面)。当你按委员会设计编码标准时会发生这种情况。

答案 4 :(得分:2)

这意味着该值是k-onstant。

答案 5 :(得分:0)

K代表konstant,一个常量的文字游戏。它涉及编码样式。

这只是一个偏好问题,一些人和项目使用它们,这意味着他们也接受匈牙利符号,许多人没有。那并不重要。

如果您不确定前缀或样式的含义,请务必检查项目是否有编码样式参考并阅读。

答案 6 :(得分:0)

这是一个惯例,可能来自数学。但是还有其他建议也是不变的,例如Kernighan和Ritchie在他们的书“C语言”中建议用大写字母写出常数的名字(例如#define MAX 55)。

答案 7 :(得分:0)

我认为,它表示系数(如数学中的k表示)