Longueur Maximale Du Nom De La Méthode

est-ce que quelqu'un sait quelle est la longueur maximale d'un nom de méthode dans la langue de programmation de votre choix? J'allais en faire une question spécifique à C#, mais je pense qu'il serait agréable de le savoir dans tous les domaines.

Quels sont les facteurs impliqués ainsi:

  • la spécification linguistique limite-t-elle cette possibilité?
  • Que fait le compilateur limite?
    • est-il différent sur 32bit vs les machines 64 bits?
39
demandé sur Allan Bowe 2009-01-09 00:15:33

10 réponses

Pour le C# je ne crois pas qu'il y a un spécifié dure limite. (La section 2.4.2 de la spécification C# 5 ne donne pas de limite, par exemple.) Roslyn v2.2.0.61624 semble avoir une limite de 1024 caractères, ce qui est bien au-delà des limites de la lisibilité et même un nom sensible généré par la machine.

Pour Java, l'article 3.8 de la spec : le

"151900920 Un identificateur est une longueur illimitée séquence de lettres Java et Java chiffres, dont le premier doit être un Java letter.

33
répondu Jon Skeet 2017-06-26 18:15:55

PHP semble être limité seulement par la limite de mémoire du script.

avec 128Mo j'ai pu créer une classe (et une méthode) avec 4 millions de caractères.

<?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;
}

?>
19
répondu Greg 2009-01-08 21:33:38

je viens de faire un test en C# Visual Studio 2010 (x64): fait un identifiant:

int a123456789a123...;

et répété. À 512 caractères, VS me donne l'erreur " Identifier trop long."511, c'est bien. (Nombre de caractères cochés dans Word.)

autre exemple:

int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifiereverಠ_ಠokaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;
15
répondu DLeh 2014-01-07 19:53:03

la mise en oeuvre de Microsoft est 511, VB.NET la mise en œuvre est 1023.

Visual Studio ne coloriera que les premiers 511 (1023 pour VB) caractères de l'identificateur et gardera le reste en noir.

12
répondu Kirill Osenkov 2010-04-15 23:35:05

en C# est 511 caractères de longueur.

4
répondu shinji14 2009-11-18 22:56:46

les noms des symboles Lisp courants sont des chaînes; les chaînes ont une limite de longueur de array-dimension-limit

la valeur de array-dimension-limit est un entier positif qui est la limite supérieure exclusive sur chaque dimension individuelle d'un tableau. Cette limite dépend de la mise en œuvre, mais ne sera pas inférieure à 1024. (Réalisateurs sont invités à faire de cette limite aussi grande que possible sans sacrifier la performance.)

In pratique cela peut être assez grand

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
? 

cette réponse ignore le nom du paquet du nom de la méthode; cela pourrait doubler la longueur.

3
répondu Doug Currie 2009-01-08 21:43:41

en cours (OpenEdge), la limite est de 32 caractères.

2
répondu vince 2012-03-28 15:19:02

Au D je ne sais pas que cela soit le cas mais je pense que c'est quelque chose de fou comme >100 MO. Il pourrait être un hors-la mémoire chose. Cela est basé sur le fait de savoir que moi et d'autres personnes ont couru dans la limitation de format de fichier objet d'environ 11kB pour les noms de symboles et que cela a été corrigé.

0
répondu BCS 2009-01-08 21:55:16

En Java, je pense qu'une limite de longueur n'est pas donné. voir ce de la ligne Sun Java Tutorial :

les noms de variables sont sensibles à la casse. Le nom d'une variable peut être n'importe quel identificateur légal - une séquence illimitée de lettres et de chiffres Unicode, commençant par une lettre...

comme les autres ci-dessus, je suppose que la longueur dépend de la mémoire disponible.

0
répondu Bill 2009-01-30 18:29:23

intéressant! En Java comme d'autres l'ont dit, il n'y a pas de limite (je n'ai jamais pensé à la longueur!) mais je pense que vous voulez éviter d'avoir un nom de méthode long car cela pourrait affecter la lisibilité et même la cartographie mentale (tout autre dev regardant le code peut oublier ou vouloir oublier le nom de méthode!).

je crois " code propre " en un mot, parle de l'utilisation de descriptif noms prononçables. Vous pourriez également argumenter un nom descriptif long est mieux qu'une courte, je suppose un équilibre sonore. tis mon humble point de vue.

0
répondu MalsR 2011-03-28 19:44:36