Acrónimos en camelCase [cerrado]


Tengo una duda sobre camelCase. Supón que tienes este acrónimo: Unesco = United Nations Educational, Scientific and Cultural Organization.

Debes escribir: unitedNationsEducationalScientificAndCulturalOrganization

Pero, ¿qué pasa si necesitas escribir el acrónimo? Algo como:

getUnescoProperties();

¿Es correcto escribirlo de esta manera? getUnescoProperties() OR getUNESCOProperties();

Author: vaxquis, 0000-00-00

8 answers

Algunas pautas Microsoft ha escrito sobre camelCase son:

Cuando utilice acrónimos, utilice Pascal case o camel case para acrónimos de más de dos caracteres. Por ejemplo, use HtmlButton o htmlButton. Sin embargo, debe poner en mayúscula las siglas que consten de solo dos caracteres, como System.IO en lugar de System.Io.

No utilice abreviaturas en identificadores o nombres de parámetros. Si debe usar abreviaturas, use camel case para abreviaturas que consistan en más de dos caracteres, incluso si esto contradice la abreviatura estándar de la palabra.

Resumiendo:

  • Cuando use una abreviatura o acrónimo que tenga dos caracteres de largo, póngalos todos en mayúsculas;

  • Cuando el acrónimo es más largo que dos caracteres, utilice una mayúscula para el primer carácter.

Entonces, en su caso específico, getUnescoProperties() es correcto.

 121
Author: ApolloSoftware,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-31 02:39:45

Hay críticas legítimas al Microsoft advice de la respuesta aceptada.

  • Tratamiento inconsistente de acrónimos/inicialismos dependiendo del número de caracteres:
    • playerID vs playerId vs playerIdentifier.
  • La cuestión de si los acrónimos de dos letras deben seguir en mayúscula si aparecen al comienzo del identificador:
    • USTaxes vs usTaxes
  • Dificultad para distinguir múltiples acrónimo:
    • es decir, USID vs usId (o parseDBMXML en el ejemplo de Wikipedia).

Así que voy a publicar esta respuesta como una alternativa a la respuesta aceptada. Los votos pueden decidir. Todos los acrónimos deben tratarse de manera coherente; los acrónimos deben tratarse como cualquier otra palabra. Citando Wikipedia :

...algunos programadores prefieren tratar las abreviaturas como si fueran palabras en minúsculas...

So I re: OP's question, I agree with accepted answer; esto es correcto: getUnescoProperties()

Pero creo que llegaría a una conclusión diferente en estos ejemplos: {[16]]}

  • US TaxesusTaxes
  • Player IDplayerId

Así que vota por esta respuesta si crees que los acrónimos de dos letras deben ser tratados como otros acrónimos.

Camel Case es una convención, no una especificación. Así que supongo que la opinión popular manda.

Y al buscar la respuesta "popular" en el código o marcado existente, tal vez la respuesta aceptada lo hice bien.

 225
Author: The Red Pea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-31 02:46:06

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 ser simplemente errónea. Si usted descubre tales errores, por favor hágamelo saber, y estaré muy agradecido.


La mejor práctica para las siglas sería evitar las siglas en la medida de lo posible. De todos modos, este no es el caso porque el acrónimo UNESCO es más familiar que el nombre completo UnitedNationsEducationalScientificAndCulturalOrganization.

Entonces, creo que UNESCO tiene más sentido que Unesco porque simplemente está más cerca de lo real forma de vida más familiar. Tuve algunos problemas para averiguar lo que la palabra Unesco realmente significa.

Como otro ejemplo, piense en Arc. Esto suena como una curva alrededor de un círculo, pero en Rust, esto significa Atomically Reference Counted. Si se ha escrito como ARC, al menos los lectores reconocerían que la palabra es un acrónimo de otra cosa en lugar de una especie de curva.

Los programas modernos están escritos principalmente para lectores humanos. Entonces esas reglas de nomenclatura deben establecerse para humanos legibilidad en lugar de procesamiento o análisis de máquinas.

En esta perspectiva, perdemos cierta legibilidad al usar Unesco sobre UNESCO mientras no ganamos nada.

Y para cualquier otro caso, creo que solo seguir reglas (o convenciones) de acrónimo en inglés simple es suficiente para la mayoría de los casos para la mejor legibilidad.

 17
Author: Eonil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 14:16:43

getUnescoProperties() debería ser la mejor solución...

Cuando sea posible, simplemente siga el camelCase puro, cuando tenga acrónimos, solo déjelos en mayúsculas cuando sea posible, de lo contrario vaya camelCase.

Generalmente en la programación OO las variables deben comenzar con letra minúscula (lowerCamelCase) y la clase debe comenzar con letra mayúscula (UpperCamelCase).

Cuando tenga dudas, simplemente vaya puro camelCase ;)

parseXML está bien, parseXml es también camelCase

XMLHTTPRequest debe ser XmlHttpRequest o xmlHttpRequest no hay manera de ir con siglas en mayúsculas posteriores, definitivamente no está claro para todos los casos de prueba.

E. g. ¿cómo se lee esta palabra HTTPSSLRequest, HTTP + SSL, o HTTPS + SL (eso no significa nada pero...), en ese caso seguir camel case convention e ir para httpSslRequest o httpsSlRequest, tal vez ya no es agradable, pero es definitivamente más claro.

 9
Author: luk_z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-02 06:16:20

Para convertir a camelCase, también existe el algoritmo (casi) determinista de Camel case de Google :

Comenzando con la forma en prosa del nombre:

  1. Convierta la frase a ASCII simple y elimine cualquier apóstrofo. Por ejemplo," el algoritmo de Müller "podría convertirse en" Mueller algoritmo".
  2. Divida este resultado en palabras, dividiendo en espacios y cualquier puntuación restante (típicamente guiones).
    1. Recomendado: si alguna palabra ya tiene un convencional camel case apariencia en uso común, divida esto en sus partes constituyentes (por ejemplo, "AdWords" se convierte en "palabras de anuncio"). Tenga en cuenta que una palabra tal como " iOS " no es realmente en camel case per se; desafía cualquier convención, por lo que esta recomendación no se aplica.
  3. Ahora todo en minúsculas (incluidas las siglas), luego solo en mayúsculas el primer carácter de:
    1. each cada palabra, para producir superior camel case, o
    2. ... cada palabra excepto la primera, para ceder inferior camel case
  4. Por último, unir todas las palabras en un único identificador.

Tenga en cuenta que la carcasa de las palabras originales es casi en su totalidad omiso.

En los siguientes ejemplos, "XML HTTP request" se transforma correctamente en XMLHttpRequest, XMLHttpRequest es incorrecto.

 6
Author: serv-inc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-01 14:38:23

Hay airbnb JavaScript Style Guide en github con muchas estrellas (~57.5 k en este momento) y guías sobre acrónimos que dicen:

Los acrónimos e inicialismos siempre deben estar todos en mayúsculas, o todos minúscula.

¿Por qué? Los nombres son para la legibilidad, no para apaciguar un algoritmo informático.

// bad
import SmsContainer from './containers/SmsContainer';

// bad
const HttpRequests = [
  // ...
];

// good
import SMSContainer from './containers/SMSContainer';

// good
const HTTPRequests = [
  // ...
];

// also good
const httpRequests = [
  // ...
];

// best
import TextMessageContainer from './containers/TextMessageContainer';

// best
const requests = [
  // ...
];
 5
Author: valex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-24 11:11:59

Actualmente estoy usando las siguientes reglas:

  1. Aplicación de la pena capital a las siglas: XMLHTTPRequest, xmlHTTPRequest, requestIPAddress.

  2. Camel case para 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, así que uso camel case.

XMLHTTPRequest es ambiguas, pero es un caso raro y no tanto ambiguo, por lo que está bien, las reglas y la lógica son más importantes que la belleza.

 3
Author: user2992258,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-12 20:47:35

La guía de estilo de Airbnb de JavaScript habla un poco sobre esto. Básicamente:

// bad
const HttpRequests = [ req ];

// good
const httpRequests = [ req ];

// also good
const HTTPRequests = [ req ];

Debido a que normalmente leo una letra mayúscula inicial como clase, tiendo a evitar eso. Al final del día, todo es preferencia.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-01 23:49:23