compiler-construction - titulo - title seo length
Longitud máxima del nombre del método (10)
En DI no sé que este sea el caso, pero sospecho que es algo loco como> 100MB. Podría ser una cosa que no se recuerda. Esto se basa en saber que yo y otras personas hemos encontrado una limitación de formato de archivo de objeto de aproximadamente 11 kB para los nombres de símbolos y que esto se ha corregido.
¿Alguien sabe cuál es la longitud máxima del nombre de un método en el lenguaje de programación de su elección? Iba a hacer de esto una pregunta específica para C #, pero creo que sería bueno saberlo a través del espectro.
¿Cuáles son los factores involucrados también?
- ¿La especificación del lenguaje lo limita?
- ¿A qué lo limita el compilador?
- ¿Es diferente en las máquinas de 32 bits frente a las de 64 bits?
Los nombres de los símbolos Common Lisp son cadenas; las cadenas tienen un límite de longitud de array-dimension-limit
El valor de array-dimension-limit
es un entero positivo que es el límite exclusivo superior en cada dimensión individual de una matriz. Este límite depende de la implementación, pero no será inferior a 1024. (Se alienta a los implementadores a hacer que este límite sea lo más grande posible sin sacrificar el rendimiento).
En la práctica, esto puede ser bastante grande
Welcome to Clozure Common Lisp Version 1.3-dev-r11583M-trunk (DarwinX8664)!
? array-dimension-limit
72057594037927936
?
Welcome to Clozure Common Lisp Version 1.3-dev-r11583M-trunk (DarwinX8632)!
? array-dimension-limit
16777216
?
Esta respuesta ignora el nombre del paquete del nombre del método; esto podría duplicar el largo.
PHP parece estar limitado solo por el límite de memoria del guión.
Con 128Mb pude crear una clase (y método) con 4 millones de caracteres.
<?php
ini_set(''memory_limit'', ''128M'');
$i = 1024 * 1024;
while ($i < 10000000)
{
$className = str_repeat(''i'', $i);
eval("class $className { public function $className() { echo ''$i<br>''; } }");
new $className();
$i *= 2;
}
?>
En Java, creo que no se da un límite de longitud. Vea esto desde el Tutorial de Sun Java en línea :
Los nombres de las variables distinguen mayúsculas de minúsculas. El nombre de una variable puede ser cualquier identificador legal: una secuencia de longitud ilimitada de letras y dígitos Unicode, que comienza con una letra ...
Al igual que los anteriores, supongo que la duración depende de la memoria disponible.
en C # tiene 511 caracteres de longitud.
La implementación de C # de Microsoft es 511, la implementación de VB.NET es 1023.
Visual Studio solo coloreará los primeros caracteres 511 (1023 para VB) del identificador y mantendrá el resto en negro.
¡Interesante! En Java, como dicen otros, no hay límite (¡nunca pensé en la longitud!), Pero creo que debes evitar tener un nombre de método largo ya que esto podría afectar la legibilidad e incluso el mapeo mental (cualquier otro desarrollador que mire el código puede olvidar o quiero olvidar el nombre del método!).
Creo que el " código limpio " en pocas palabras habla sobre el uso de nombres pronunciables descriptivos. También podría argumentar que un nombre descriptivo largo es mejor que uno corto, supongo que un equilibrio de sonido. esta es mi humilde vista.
en progreso (OpenEdge) el límite es 32 char.
Acabo de hacer una prueba en C # Visual Studio 2010 (x64): hice un identificador:
int a123456789a123...;
Y repetido Con 512 caracteres, VS me da el error "Identificador demasiado largo". 511 está bien sin embargo. (Número de caracteres seleccionados en Word).
Otro ejemplo:
int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifiereverಠ_ಠokaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;
Para C #, no creo que haya un límite estricto especificado . (La sección 2.4.2 de la especificación C # 5 no da un límite, por ejemplo). Roslyn v2.2.0.61624 parece tener un límite de 1024 caracteres; esto está más allá de los límites de la legibilidad e incluso de un nombre sensible generado por la máquina.
Para Java, la sección 3.8 de la especificación establece:
Un identificador es una secuencia de longitud ilimitada de letras Java y dígitos de Java, la primera de las cuales debe ser una letra de Java.