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_propertiesoget_u_n_e_s_c_o_properties?Respuestas:
Algunas pautas sobre las que Microsoft ha escrito
camelCaseson: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
IDlugarId(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.
playerIDvsplayerIdvsplayerIdentifier.USTaxesvsusTaxesUSIDvsusId(oparseDBMXMLen 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→usTaxesPlayer ID→playerIdPor 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
USTaxesyPlayerId; camelCase:usTaxesyplayerId. 3) SeríaUSIden PascalCase,usIden camelCase yparseDbmXmlen 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
UNESCOes más familiar que el nombre completoUnitedNationsEducationalScientificAndCulturalOrganization.Entonces, creo que
UNESCOtiene más sentido queUnescoporque simplemente está más cerca de la forma de la vida real y es más familiar. Tuve algunos problemas para entender quéUnescosignifica 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
UnescomásUNESCOtiempo 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;)parseXMLestá bien,parseXmles tambiéncamelCaseXMLHTTPRequestdebe serXmlHttpRequestoxmlHttpRequestno 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 + SSLoHTTPS + SL(eso no significa nada más que ...), en ese caso, siga la convención de casos de camellos y busquehttpSslRequestohttpsSlRequest, tal vez ya no sea agradable, pero definitivamente es más claro.fuente
HTTPSSLejemplo, 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
XMLHTTPRequestes mucho mejor legible queXmlHttpRequest, ¿verdad?httpRequestsse considera bueno, peroHttpRequestses malo. siguiendo este principio, entonces, para XML HTTP Request debería serxmlhttpRequest???xmlHttpRequestes más legible queXMLHTTPRequesten 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].IDEs 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.
XMLHTTPRequestes 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
HtmlButtones 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:
encodeURIComponentXMLHttpRequesttoJSONtoISOStringfuente
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,
getypropertiesno 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 escribirunescoPropertiespara una variable oUNESCOPropertiespara 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
XMLHTTPRequestno sería fácil de leer (? Es que XMLH TTP Solicitud), yXMLhttpRequestse 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,HTTPRequestserí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