Tengo una duda sobre CamelCase. Supongamos que tienes este acrónimo:Unesco = United Nations Educational, Scientific and Cultural Organization.
Deberías escribir: unitedNationsEducationalScientificAndCulturalOrganization
Pero, ¿qué pasa si necesitas escribir el acrónimo? Algo como:
getUnescoProperties();
¿Es correcto escribirlo de esta manera? getUnescoProperties() OR getUNESCOProperties();
coding-style
camelcasing
acronym
gal007
fuente
fuente
get_unesco_properties
oget_u_n_e_s_c_o_properties
?Respuestas:
Algunas pautas sobre las que Microsoft ha escrito
camelCase
son:Resumiendo:
Cuando use una abreviatura o acrónimo de dos caracteres de largo, póngalos todos en mayúscula;
Cuando el acrónimo es más largo que dos caracteres, use una capital para el primer personaje.
Entonces, en su caso específico,
getUnescoProperties()
es correcto.fuente
ID
lugarId
(que uso / veo en todas partes)XMLHttpRequest()
originalmente vinieron de Microsoft.Hay críticas legítimas de los consejos de Microsoft de la respuesta aceptada.
playerID
vsplayerId
vsplayerIdentifier
.USTaxes
vsusTaxes
USID
vsusId
(oparseDBMXML
en el ejemplo de Wikipedia).Entonces publicaré esta respuesta como una alternativa a la respuesta aceptada. Todos los acrónimos deben ser tratados consistentemente; Las siglas deben tratarse como cualquier otra palabra. Citando Wikipedia :
Entonces, re: pregunta de OP, estoy de acuerdo con la respuesta aceptada; esto es correcto:
getUnescoProperties()
Pero creo que llegaría a una conclusión diferente en estos ejemplos:
US Taxes
→usTaxes
Player ID
→playerId
Por lo tanto, vote por esta respuesta si cree que los acrónimos de dos letras deben tratarse como otros acrónimos.Camel Case es una convención, no una especificación. Así que supongo que las reglas de opinión popular.( EDITAR: Eliminar esta sugerencia de que los votos deberían decidir este tema; como dice @Brian David; Stack Overflow no es un "concurso de popularidad", y esta pregunta se cerró como "basada en la opinión")
Aunque muchos prefieren tratar los acrónimos como cualquier otra palabra, la práctica más común puede ser poner acrónimos en mayúsculas (aunque conduzca a "abominaciones")
Otros recursos:
fuente
USTaxes
yPlayerId
; camelCase:usTaxes
yplayerId
. 3) SeríaUSId
en PascalCase,usId
en camelCase yparseDbmXml
en camelCase.InIN(item)
vsInIn(item)
(pista: IN es pulgadas (s)). O,IDById(id)
vsIdById(id)
, ciencia del contexto (pista: ID significa enfermedad infecciosa). "Dos caracteres de largo": ¿en qué contexto?Primero, tengo que aclarar que no soy un hablante nativo de inglés , por lo que mi afirmación sobre la gramática inglesa puede simplemente estar equivocada. Si descubre tales errores, hágamelo saber y le estaré muy agradecido.
La mejor práctica para el acrónimo sería evitar los acrónimos tanto como sea posible. De todos modos, este no es el caso porque el acrónimo
UNESCO
es más familiar que el nombre completoUnitedNationsEducationalScientificAndCulturalOrganization
.Entonces, creo que
UNESCO
tiene más sentido queUnesco
porque simplemente está más cerca de la forma de la vida real y es más familiar. Tuve algunos problemas para entender quéUnesco
significa realmente la palabra .Como otro ejemplo, piense en
Arc
. Esto suena como una curva alrededor de un círculo, pero en Rust, esto significaAtomically Reference Counted
. Si se ha escrito asíARC
, al menos los lectores reconocerían que la palabra es un acrónimo de algo más que una especie de curva.Los programas modernos están escritos principalmente para lectores humanos. Entonces, esas reglas de nomenclatura deben establecerse para la legibilidad humana en lugar del procesamiento o análisis de la máquina.
En esta perspectiva, se pierde un poco de lectura mediante el uso de
Unesco
másUNESCO
tiempo que obtienen nada.Y para cualquier otro caso, creo que solo seguir las reglas (o convenciones) acrónimas en inglés es suficiente para la mayoría de los casos para una mejor legibilidad .
fuente
Para convertir a CamelCase, también existe el algoritmo de caso Camel (casi) determinista de Google :
En los siguientes ejemplos, la "solicitud XML HTTP" se transforma correctamente a XmlHttpRequest, XMLHTTPRequest es incorrecta.
fuente
getUnescoProperties()
debería ser la mejor solución ...Cuando sea posible, solo siga el puro
camelCase
, cuando tenga acrónimos, simplemente déjelos en mayúscula cuando sea posible, de lo contrario, vayacamelCase
.En general, en OO, las variables de programación deben comenzar con letras minúsculas (
lowerCamelCase
) y la clase debe comenzar con letras mayúsculas (UpperCamelCase
).En caso de duda, simplemente ir puro
camelCase
;)parseXML
está bien,parseXml
es tambiéncamelCase
XMLHTTPRequest
debe serXmlHttpRequest
oxmlHttpRequest
no el camino a seguir con acrónimos de mayúsculas posteriores, definitivamente no está claro para todos los casos de prueba.por ejemplo, cómo se lee esta palabra
HTTPSSLRequest
,HTTP + SSL
oHTTPS + SL
(eso no significa nada más que ...), en ese caso, siga la convención de casos de camellos y busquehttpSslRequest
ohttpsSlRequest
, tal vez ya no sea agradable, pero definitivamente es más claro.fuente
HTTPSSL
ejemplo, aunque SL no significa nada, ¿qué tal algo como HTTPSSHTunnel? ¿Es HTTPS + SH (shell) o HTTP + SSH? La convención de Google es definitivamente menos ambigua.Hay una guía de estilo JavaScript de airbnb en github con muchas estrellas (~ 57.5k en este momento) y guías sobre acrónimos que dicen:
fuente
XMLHTTPRequest
es mucho mejor legible queXmlHttpRequest
, ¿verdad?httpRequests
se considera bueno, peroHttpRequests
es malo. siguiendo este principio, entonces, para XML HTTP Request debería serxmlhttpRequest
???xmlHttpRequest
es más legible queXMLHTTPRequest
en mi opinión.Actualmente estoy usando las siguientes reglas:
Caso de pena capital para los acrónimos:
XMLHTTPRequest
,xmlHTTPRequest
,requestIPAddress
.Caso del camello por abreviaturas:
ID[entifier]
,Exe[cutable]
,App[lication]
.ID
Es una excepción, lo siento pero es cierto.Cuando veo una letra mayúscula, asumo un acrónimo, es decir, una palabra separada para cada letra. Las abreviaturas no tienen palabras separadas para cada letra, por lo que uso el caso de camello.
XMLHTTPRequest
es ambiguo, pero es un caso raro y no es tan ambiguo, así que está bien, las reglas y la lógica son más importantes que la belleza.fuente
La guía de estilo JavaScript Airbnb habla un poco sobre esto . Básicamente:
Como normalmente leo una letra mayúscula principal como clase, tiendo a evitar eso. Al final del día, todo es preferencia.
fuente
Además de lo que ha dicho @valex, quiero recapitular un par de cosas con las respuestas dadas para esta pregunta.
Creo que la respuesta general es: depende del lenguaje de programación que esté utilizando.
C Sharp
Microsoft ha escrito algunas pautas donde parece que esa
HtmlButton
es la forma correcta de nombrar una clase para estos casos.Javascript
Javascript tiene algunas variables globales con siglas y las usa todas en mayúscula (pero curiosamente, no siempre de manera consistente) aquí hay algunos ejemplos:
encodeURIComponent
XMLHttpRequest
toJSON
toISOString
fuente
onerror
.descargo de responsabilidad: el inglés no es mi tono materno. Pero he pensado en este problema durante mucho tiempo, especialmente cuando uso el nodo (estilo camelcase) para manejar la base de datos, ya que el nombre de los campos de la tabla debe ser una serpiente, este es mi pensamiento:
Hay 2 tipos de 'acrónimos' para un programador:
tmc and textMessageContainer
, que generalmente aparece como una variable local.En el mundo de la programación, todas las siglas en lenguaje natural deben tratarse como palabras , las razones son:
cuando programamos, deberíamos nombrar una variable ya sea en estilo de acrónimo o sin estilo de acrónimo. Entonces, si nombramos una función getUNESCOProperties, significa que UNESCO es un acrónimo (de lo contrario, no deberían ser todas letras mayúsculas), pero evidentemente,
get
yproperties
no son acrónimos. entonces, deberíamos nombrar esta función como gunescop o getUnitedNationsEducationalScientificAndCulturalOrganizationProperties , ambas son inaceptables.el lenguaje natural está evolucionando continuamente, y las siglas de hoy se convertirán en palabras mañana , pero los programas deberían ser independientes de esta tendencia y permanecer para siempre.
por cierto, en la respuesta más votada, IO es el acrónimo en el significado del lenguaje de computadora (significa InputOutput), pero no me gusta el nombre, ya que creo que el acrónimo (en lenguaje de computadora) solo debe usarse para nombrar una variable local pero una clase / función de nivel superior, por lo que se debe usar InputOutput en lugar de IO
fuente
La UNESCO es un caso especial, ya que generalmente (en inglés) se lee como una palabra y no como un acrónimo, como UEFA, RADA, BAFTA y, a diferencia de BBC, HTML, SSL
fuente
También hay otra convención camelcase que trata de favorecer la legibilidad de los acrónimos utilizando mayúsculas (
HTML
) o minúsculas (html
), pero evitando ambas (Html
).Entonces en tu caso podrías escribir
getUNESCOProperties
. También puede escribirunescoProperties
para una variable oUNESCOProperties
para una clase (la convención para las clases es comenzar con mayúsculas).Esta regla se vuelve complicada si desea juntar dos siglas, por ejemplo, para una clase llamada XML HTTP Request. Sería empezar con mayúscula, pero ya
XMLHTTPRequest
no sería fácil de leer (? Es que XMLH TTP Solicitud), yXMLhttpRequest
se rompería la convención CamelCase (? Es que XM LHTTP Solicitud), la mejor opción sería la de la casuística:XMLHttpRequest
, que es en realidad lo que usó el W3C . Sin embargo, se desaconseja el uso de este tipo de nombres. Para este ejemplo,HTTPRequest
sería un mejor nombre.Dado que la palabra oficial en inglés para identificación / identidad parece ser ID, aunque no es un acrónimo, puede aplicar las mismas reglas allí.
Esta convención parece ser bastante popular, pero es solo una convención y no hay bien o mal. Solo trate de cumplir con una convención y asegúrese de que sus nombres sean legibles.
fuente