programacion - Convención de nombres de Java con acrónimos
nomenclaturas java (10)
¿Cuál es el nombre correcto para la siguiente clase de Java: DVDPlayer
o DvdPlayer
?
Algunos ejemplos de las clases JavaSE, apache commons y spring:
-
HttpURLConnection
-
HTTPAddress
-
UrlPathHelper
-
AopProxy
-
ISBNValidator
Entonces, en realidad no importa.
Como otros han indicado, es algo de estilo que difiere en los proyectos. Los proyectos de Google como Guava y GWT prefieren el estilo DvdPlayer
. Consulte la sección llamada Acrónimos en los nombres aquí: http://code.google.com/webtoolkit/makinggwtbetter.html#codestyle
(La página trata sobre GWT, pero los mismos estilos de código se usan en todos los proyectos de Google).
Dado que parece que la respuesta es que no existe un estándar único para esto en Java, me gustaría señalar que las Pautas de diseño de .Net Framework lo especifican.
Ahora, antes de criticarme por estar fuera del tema, recuerde que las pautas de nomenclatura de la clase para Java y .Net Framework son bastante similares, lo que hace que las pautas de .Net sean útiles como referencia persuasiva.
Reglas generales
Ambas directrices recomiendan solo usar acrónimos cuando el acrónimo es ampliamente conocido y bien entendido. DVD o XML son excelentes ejemplos de esto, ya que si bien los reconocerá inmediatamente, tomaría un poco más de tiempo reconocer la versión expandida.
Abreviaciones
Las Directrices del .Net Framework recomiendan no utilizar abreviaturas (en lugar de Acrónimos), excepto que se pueden usar dos abreviaturas comunes ''ID'' y ''OK'' en los identificadores. Cuando se utiliza una abreviatura, siempre se usa Id
caso mixto, excepto la primera palabra de un identificador camelCase (a diferencia de un identificador PascalCase).
En Java, esta convención se sigue solo algunas veces. Eche un vistazo a cómo se mezclaron los deletreos getID
y getId
en el JCL. (Desplácese hacia la mitad de esa página). Sin embargo, en la versión de Java 8 , getId se usa cada vez más, lo que indica que la convención de PascalCase es la preferida hoy en día. Lo mejor es evitar las abreviaturas por completo cuando sea posible.
Acrónimos cortos
Las Directrices del .Net Framework indican que dos acrónimos de letras como ''IO'' deben tener el mismo caso para ambas letras. Entonces, para los identificadores PascalCase (como el nombre de una clase) obtendría DBRate
, mientras que para un identificador camelCase (como una variable local) podría tener ioChannel
.
Definitivamente esta parece ser la convención predominante en Java también.
Siglas Largas
Las directrices de .Net Framework recomiendan que los acrónimos de tres letras o más usen mayúsculas y minúsculas para los identificadores PascalCase y camelCase, a excepción de la primera palabra de un identificador camelCase. Por lo tanto, para un nombre de clase podría tener XmlDocument
, mientras que una variable local podría llamarse httpRequest
.
Esta convención no siempre se sigue en Java. Los acrónimos de cuatro caracteres parecen generalmente usar mayúsculas y minúsculas, pero incluso el JCL no es consistente con tres acrónimos de letras. La mayoría de ellos parecen estar en mayúsculas, como ''URL'', ''XML'', ''SQL'' y ''DOM'', pero hay algunas excepciones como ''Jar''.
Conclusión
Para Java:
Para acrónimos de más de 4 letras, use mayúsculas y minúsculas. La biblioteca estándar hace esto, y tiene mucho sentido.
Para acrónimos de 3 letras, puede usar mayúsculas como el JCL, o puede usar mayúsculas y minúsculas como lo hace .Net Framework. De cualquier manera, sé consistente.
Para acrónimos de 2 letras, use mayúsculas.
Para las abreviaturas de 2 letras, Java realmente no tiene un estándar, pero sugiero usar un encapsulado mixto, a menos que la consistencia con otros nombres indique que todo se verá mejor.
De los documentos de Sun Java :
Los nombres de las clases deben ser sustantivos, en mayúsculas y minúsculas, con la primera letra de cada palabra interna en mayúscula. Trate de mantener sus nombres de clase simples y descriptivos. Use palabras enteras; evite los acrónimos y las abreviaturas (a menos que la abreviatura sea mucho más utilizada que la forma larga, como URL o HTML).
Los he visto usar a ambos en la naturaleza, y Sun parece ser del estilo DVDPlayer
. Aunque prefiero DvdPlayer
, porque de esa forma está claro dónde están los límites de las palabras, incluso si hay múltiples acrónimos consecutivos, como en HTTPURLConnection
.
Me gusta definir instancias individuales de clases de la siguiente manera:
Catalogue catalogue;
Person person;
Por lo tanto, si utilicé DVDPlayer
, ¿qué llamaría una instancia de eso? dVDPlayer
? Por lo tanto, elegiría el nombre de la clase DvdPlayer
, para que pueda nombrar las instancias como dvdPlayer
.
No hay preferencias "correctas", solo aquí.
Sun es consistente en la forma en que nombran las clases que contienen "URL" y "HTML", pero veo que HTTP usa mayúsculas y camello en los javadocs.
Personalmente, preferiría DvdPlayer.
Efectivo Java parece preferir DvdPlayer.
DVDPlayer
es el estándar, pero DvdPlayer
no es infrecuente.
getId
ves getId
. Probablemente se deba a que ID de pensamiento es un acortamiento de "Identidad". En realidad, son las iniciales del documento de identidad.
HttpURLConnection
menudo se da como un ejemplo de convención mixta. Sin embargo, "http" usado como nombre de protocolo en una URL debe estar en minúsculas (aunque a veces se acepta mayúsculas).
No hay una respuesta "correcta". Solo un conjunto de prácticas y convenciones que funcionan mejor con sus otras herramientas.
Por lo tanto, prefiero DvdPlayer
. Es más útil ya que en Eclipse puedes hacer Ctrl + Shift + T y elegir clases con la primera letra de cada palabra.