He visto muchos códigos con una declaración como Class clazz
, ¿de dónde proviene esto? ¿Es esto algún tipo de convención? Creo que 'clazz' no es ni siquiera una palabra en inglés, no tiene ningún significado en absoluto, ¿cómo pueden tantos programadores nombrar un nombre incorrecto casualmente?¿Por qué a los programadores Java les gusta nombrar una variable "clazz"?
Respuesta
clazz
se ha utilizado en Java en lugar de la palabra reservada "clase" desde JDK 1.0. "clase" es lo que quieres, pero abreviar o insertar basura ("a", "the", "_", etc.) reduce la claridad. clazz
solo dice clase. Los hablantes de inglés "internacionales" (quienes leen inglés y estadounidense) están acostumbrados a transponer 's' y 'z'.
Dado que Java ha revelado la fuente y una cultura adecuada desde el principio, el valioso código Java y los tutoriales recogen las mismas convenciones. Esa es una de las mejores cosas sobre el ecosistema de Java, que creo que ha sido una parte importante de su éxito.
Es difícil aceptar que "clazz" es más claro que "_class "o" myClass ". Si hubiera visto "_class" en el código, la intención habría sido más obvia que una palabra no verbal que me envió a Google (y a esta página). – uscjeremy
@uscjeremy: Personalmente, prefiero el uso de guiones bajos a tener identificadores que difieren solo en el caso. Si estuviera diseñando un lenguaje, lo haría ser un híbrido de reglas sensibles a mayúsculas y minúsculas: cualquier identificador solo podría * usarse * exactamente en la carcasa original, pero la declaración de cualquier identificador ocultaría cualquier preexistente. identificadores que difieren solo en la carcasa. Tener 'Foo' definido en el alcance de clase y' foo' en el ámbito de variable local debería ser legal, pero todas las referencias a la variable de ámbito de clase dentro del alcance del local deberían requerir 'this.Foo'. Tal regla sería ... – supercat
@uscjeremy: ... en mi opinión, combine las ventajas de los idiomas sensibles a mayúsculas y minúsculas. Los lenguajes insensibles a las mayúsculas y minúsculas tienen la ventaja de que las lecturas fonéticas de un nombre identificador "foo" serán inequívocas sin tener que decir "foo mayúscula" o "foo minúscula", pero no hay ninguna razón real para permitir que un identificador se deletree 'someThing' en algunos lugares y 'sOmEtHiNg' en otros. – supercat
Porque no pueden usar la palabra que quieren usar que es 'clase'. Esta reservado.
Sí, lo sé, pero creo que deletrear un derecho variable sería más significativo. – Sawyer
@Tony: ¿cómo puedes decir "ya sabes" y exigir que el nombre de la variable se deletree en el mismo comentario? Ellos son mutuamente exclusivos. – duffymo
@Tony, simplemente no puede nombrar una variable "clase", es una palabra reservada. –
Es simplemente porque 'clase' es una palabra clave reservada, por lo tanto Class class
no está permitido. Por lo tanto, verá Class clazz
o Class cls
.
No puedo pensar en una razón para nombrar una clase 'Class' ya que hay tantas clases en cualquier proyecto que llamar a una clase LA clase parece un poco sin sentido. Tampoco puedo pensar en una razón para llamar a una 'clase' VARIABLE ... – Blindy
No has nombrado una clase Clase, es una API java. – Sawyer
@Blindy: ¿Qué pasa con java.lang.Class? No tienes mucha opción allí. –
Es solo una palabra en inglés reemplazada (Equivalente) por Keyword Palabra clave Keyword, para que la gente entienda que es una Clase. y es casi para aumentar la legibilidad del código
Nada grande lógica utilizada en este
de dónde viene esta originan a partir de?
La vi por primera vez en los rompecabezas de Josh Bloch. Pero estoy bastante seguro de que fue usado mucho antes por otros desarrolladores. Josh Bloch acaba de hacerlo más famoso.
Java no tiene una característica que le permite utilizar una palabra clave como un identificador, a diferencia de C# con su @
prefijo (por ejemplo @class
es un identificador válido.)
¿qué hay de $ class en java? – irreputable
Ese es un identificador diferente. 'class' y' $ class' son ambos identificadores válidos (pero diferentes) en la JVM. No hay ningún identificador que pueda escribir en un archivo fuente Java que se traduce como '" clase "' en la máquina virtual. – finnw
otra razón por la que C# es 10^10 veces mejor que java – morpheus
Todo se reduce a que el compilador real y su capacidad para distinguir qué significa un token dentro de su contexto. Sin embargo, en este caso particular, es la incapacidad del compilador para distinguir lo que significa el token class
en un contexto diferente. Es una regla difícil y rápida que class
, independientemente de su contexto, se utiliza para denotar la declaración de una clase, y como tal es palabra reservada. Eso es tan simple y tan bajo como sea posible.
Si se siente obligado, puede escribir su propio compilador de Java para incluir una regla contextual que le permita usar class
como nombre de variable. Aunque creo que sería mucho mejor utilizar tu tiempo para simplemente usar clazz
o klass
, probablemente sea bueno para tu salud también.
Una palabra sobre * inhabilidad *: Java ** fue diseñado ** como un lenguaje * de palabras reservadas. Los lenguajes de palabras no reservadas pueden compilar y resaltar declaraciones de sintaxis con éxito, como * if if then else else *, a pesar de (un) legibilidad. Entonces, el compilador fue deliberadamente dejado * incapaz * –
Usamos clazz porque class es un encabezado de tipo. Por ejemplo, se utiliza la clase aquí:
public class HelloWorld {
y aquí:
Object.class.getName();
Así que, lamentablemente, tenemos que usar nombres alternativos tales como clazz.
La declaración Class clazz
es popular en el mundo de Java, pero puede ser incómodo para los recién llegados y los correctores ortográficos. Algunas personas podrían decir que debe evitarse de acuerdo con principle of least astonishment.
Como podemos decir que un objeto Class
represents a type, personalmente prefiero declarar tales variables como Class type
.
- 1. ¿Por qué a las personas scala no les gusta la anotación?
- 2. Enseñando JavaScript a los programadores de Java
- 3. Nombrar una variable de conteo
- 4. ¿Puedo nombrar una matriz con una variable en java?
- 5. Explicando SVN a no programadores
- 6. ¿Por qué se les llama "la pandilla de los cuatro"?
- 7. Convenciones de nomenclatura: ¿qué nombre nombrar una variable booleana?
- 8. ¿Hay alguna manera de obtener facepile para mostrar a las personas que les gusta mi página
- 9. Virtualización y por qué es bueno para los programadores
- 10. ¿Qué IDE utilizan los programadores CLISP?
- 11. ¿Cómo les duele a los zombis?
- 12. SQL Server 2005: ¿Por qué nombrar transacciones?
- 13. ¿Cómo maneja la programación/fechas límite alrededor de los programadores?
- 14. ¿Por qué una variable "Clase" no se puede pasar a instanceof?
- 15. Java: ¿Por qué debo inicializar una variable local primitiva?
- 16. programadores Java EE no escriben en archivos
- 17. ¿Por qué no hay una variable estática local en Java?
- 18. ¿Qué tecnologías necesitan saber los programadores de C++?
- 19. ¿Por qué algunos programadores experimentados escriben comparaciones con el valor antes de la variable?
- 20. Grupo SQL por "Me gusta"
- 21. ¿Por qué debemos asignar un clon a una nueva variable?
- 22. ¿Se les permite a los compiladores eliminar infinitos bucles?
- 23. ¿Cómo sobrevivieron los programadores Java antes de las anotaciones?
- 24. ¿Por qué a los delegados de Objective-C generalmente se les asigna la propiedad en lugar de retener?
- 25. ApplicationContext.getBean (clazz Clase) no va bien con los proxies
- 26. ¿Qué modismos de C++ deben usar los programadores de C++?
- 27. plug-in "Me gusta", "No me gusta" para los carriles
- 28. Cómo nombrar una variable: numItems o itemsCount o itemCount?
- 29. ¿Cómo nombrar métodos similares a los de fábrica?
- 30. ¿Por qué se les permite a las clases de C++ tener miembros con cero datos?
no se olvide klass! –
@Peter: buen punto, eso es un clasico. –
... y qué pasa con 'Class class1' o' Class myClass'? –