23

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

//ex.
function _myPrivateFunction(){
}   

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

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

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

4

5 回答 5

16

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

这个 wiki 链接在下划线方面提供了很多信息。

于 2009-04-23T22:49:07.347 回答
6

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

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

于 2009-04-23T22:50:16.347 回答
3

下划线 (_) 代表私有/受保护函数或变量。

不知道谁真的想出了它,但我知道它是由 Zend(和 Zend 编码标准)“支持”的。

编辑: http: //framework.zend.com/manual/en/coding-standard.naming-conventions.html

-> B.3.4 节 -> 第 2 段

于 2009-04-24T09:38:17.443 回答
0

我已经看到下划线被用作私有函数,我已经看到下划线被用作全局函数。下划线也用于表示 PHP 本身内的全局变量。

$_POST $_GET $_SESSION etc..

这只是一个命名约定,所以我会问作者,如果他在附近。

于 2009-04-24T09:46:42.820 回答
0

我在编写 C++ 时第一次看到它。通常使用“m_”前缀标记成员变量。

当我编写 Java 时,我宁愿不使用任何这些。我使用“this”明确成员变量。

于 2009-04-23T22:46:45.277 回答