2009-04-23 17 views
17

En muchos idiomas con capacidad OO simple (PHP 4), o capacidades OO incomprendidas (Javascript, C usando punteros a funciones, etc.), terminará con una convención de nomenclatura de función que utiliza subraya para indicar el nivel de privilegio._Underscores en nombres de funciones

//ex. 
function _myPrivateFunction(){ 
} 

Mientras que los equipos individuales siempre van a llegar a sus propias convenciones de nomenclatura de este tipo, la convención subrayado parece tan frecuente que me hizo curioso sobre

  1. Cuando la técnica fue primero de
  2. Si existió algún sistema estandarizado (algo así como la notación húngara) desarrollado en torno a la convención

Beyond pure curiousity, I ' Estoy viendo esto en algunas bases de código con las que estoy lidiando en este momento, y me gustaría entender los posibles espacios de cabeza de los desarrolladores que originalmente se le ocurrieron.

+2

En Python no solo se trata de una convención de nomenclatura, ¡sino que dos guiones bajos principales en realidad los hace privados! –

Respuesta

12

En C++ world, los nombres de miembros que comienzan con guiones bajos están reservados para ser utilizados por compiladores (o STL de bajo nivel como API). No está prohibido por los compiladores de ninguna manera, pero esa es la tradición.

Este enlace en la wiki es bastante informativo en underscore.

+7

En realidad, todos los nombres que comienzan con un guión bajo están reservados en el espacio de nombres global, pero solo los nombres que contienen doble guión bajo o que comienzan con guión bajo y una letra * mayúscula * están reservados en todos los contextos. Consulte http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier o 17.4.3 en el estándar. –

+0

Parece la más antigua, por lo que es una victoria para ti. @onebyone, estoy empezando a entender realmente por qué C++ recibe un golpe tan malo ahora :) –

+0

Supongo que el enlace a la wiki de subrayado está destinado a referirse a la programación (la desambiguación se agregó después de que este enlace se agregó a la respuesta que pensar). Entonces probablemente debería cambiar a: https://en.wikipedia.org/wiki/Naming_convention_(programming)? – Joakim

0

La primera vez que lo vi fue cuando codificaba C++. Marcar las variables miembro con el prefijo "m_" se hizo comúnmente.

Prefiero no usar nada de eso cuando escribo Java. Hago claras las variables miembro usando "this".

+0

Las variables miembro se marcan automáticamente en java porque las herramientas usan análisis estáticos. ¡Mira el color de tus variables en cualquier editor que uses! Poniendo esto. al frente implica que confía en él para su reconocimiento. Si confía en algún ser humano que recuerde usar.esto en lugar de una máquina que SABE exactamente cuál es la variable, obviamente depende del indicador equivocado. –

+0

Eso es cierto, Bill. Estoy corregido. – duffymo

+0

Correcta o incorrectamente, sospecho que algunas personas todavía escriben (o especialmente leen) Java utilizando editores de texto que no pueden hacer un análisis de código decente (o cualquiera). Intento tratar el resaltado de sintaxis como algo que me ayuda a editar, no como algo que otras personas necesitan si quieren poder leer mi código ... –

6

No puedo decirle el origen de esta convención. Supongo que, dado que el guión bajo es el único carácter no alfanumérico permitido en los identificadores en la mayoría de los lenguajes de programación, es natural elegirlo como prefijo para los miembros privados.

En Python, anteponiendo los nombres con un guión es más que una convención: Símbolos que comienzan con un carácter de subrayado no se importan de manera predeterminada al importar "todo" de un módulo, por lo tanto, el subrayado indica "uso interno" "privado"/.

0

que he visto subrayado utilizado como funciones privadas y he visto visto subrayado como funciones globales. También el subrayado se usa para indicar variables globales dentro de PHP.

$_POST $_GET $_SESSION etc.. 

Es solo una convención de nombres, así que le preguntaría al autor, si está cerca.

Cuestiones relacionadas