常量的 k 前缀从何而来?

问题描述 投票:0回答:9

常量以

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

难道

c
已经意味着
char
吗?

c++ objective-c c prefix hungarian-notation
9个回答
115
投票

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

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

一段时间后,随着类型语言(尤其是 C)变得越来越流行,一些被误导的人听说这是一个好主意,但不明白其目的。他们建议为每个变量添加冗余标签,以指示其声明的类型。它们的唯一用途是更容易检查变量的类型;除非有人更改了类型并忘记更新标签,在这种情况下它们是非常有害的。

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

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


38
投票

我没见过那么多,但也许它来自某些语言(特别是日耳曼语)单词“constant”的拼写 - konstant


9
投票

顺便说明一下:Google 编码标准中的很多内容都是不好的做法(就代码可读性而言)。这就是当您由委员会设计编码标准时会发生的情况。


6
投票


6
投票


4
投票

这只是一个偏好问题,有些人和项目使用它们,这意味着他们也接受匈牙利表示法,但很多人不接受。这并不重要。

如果您不确定前缀或样式可能意味着什么,请务必检查项目是否有编码样式参考并阅读它。


3
投票

NODE_ENV = 'production';

但最近,我看到 Flutter SDK 中使用了 
k

前缀。对我来说,继续使用

k 前缀
 是有意义的,因为它
可以帮助您的编辑器/IDE 在代码库中搜索常量


2
投票


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.