关于php:函数名称中的_Underscores

_Underscores in Function Names

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

1
2
3
//ex.
function _myPrivateFunction(){
}

虽然各个团队总是会想出这样的命名约定,但是下划线约定似乎很流行,这让我很好奇

  • 技术最初来自哪里
  • 如果有任何标准化的系统(类似匈牙利符号)是围绕着公约发展起来的
  • 除了纯粹的好奇心,我在我现在处理的几个代码库中看到了这一点,我想了解最初开发它的开发人员可能拥有的空间。


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

    这个wiki链接的下划线信息量很大。


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

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


    下划线(u)表示私有/受保护的函数或变量。

    不知道是谁提出的,但我知道它是由Zend(和Zend编码标准)支持的。

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

    ->第B.3.4节->第2段


    我见过下划线用作私有函数,也见过下划线用作全局函数。此外,下划线还用于表示PHP内部的全局变量。

    1
    $_POST $_GET $_SESSION etc..

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


    我第一次看到它是在编码C++的时候。通常使用"m_uuu"前缀标记成员变量。

    在编写Java时,我更不喜欢使用其中任何一种。我使用"this"清除成员变量。