函数名称中的_Underscores

在许多具有简单 OO 功能 (PHP 4) 或被误解的 OO 功能(Javascript、使用函数指针的 C 等)的语言中,您最终会得到一个函数命名约定,该约定使用前导下划线 to 来指示权限级别。

//ex.
function _myPrivateFunction(){
}   

虽然各个团队总是会像这样提出自己的命名约定,但下划线约定似乎如此普遍,以至于让我感到好奇。

  1. 技术最初来自哪里
  2. 如果曾经围绕公约开发了任何标准化系统(有点像匈牙利符号)

除了纯粹的好奇心之外,我还在现在正在处理的一些代码库中看到了这一点,我想了解最初提出它的开发人员的可能头空间。


答案 1

在C++世界中,以下划线开头的成员名称保留供编译器(或像 API 这样的低级 STL)开发人员使用。编译器不会以任何方式禁止它,但这是传统。

这个维基链接在下划线方面非常翔实。


答案 2

我不能告诉你这个公约的起源。我的猜测是,由于下划线是大多数编程语言中标识符中唯一允许的非字母数字字符,因此选择它作为私有成员的前缀是很自然的。

在Python中,用下划线为名称添加前缀不仅仅是一种约定:从模块导入“everything”时,默认情况下不会导入以下划线开头的符号,因此下划线表示“私有”/“内部用法”。