44 votes

Longueur maximale du nom de la méthode

Quelqu'un sait-il par hasard quelle est la longueur maximale d'un nom de méthode dans le langage de programmation de son choix ? J'avais l'intention d'en faire une question spécifique à C#, mais je pense qu'il serait bon de connaître tous les langages.

Quels sont également les facteurs en jeu ?

  • La spécification de la langue limite-t-elle cette possibilité ?
  • A quoi le compilateur le limite-t-il ?
    • Est-il différent sur les machines 32 bits et 64 bits ?

7 votes

J'aimerais savoir pourquoi vous avez besoin de la réponse à cette question.

8 votes

Lol, surtout par curiosité. Un collègue et moi étions en train d'écrire des méthodes de test unitaire et l'une d'entre elles était particulièrement verbeuse (bien en dessous de toute limite), mais nous avons été intrigués de savoir quelle était la longueur maximale autorisée.

0 votes

OK - je vérifie juste - je pensais que c'était quelque chose comme ça. La seule fois où j'ai rencontré quelque chose de ce genre, c'était les messages d'avertissement stupides dans VC6 pour les builds de débogage qui avaient STL - les noms de symboles étaient plus longs que 256 caractères ou quelque chose comme ça, donc ils étaient tronqués.

37voto

Jon Skeet Points 692016

Pour le C#, je ne crois pas qu'il y ait un spécifié limite stricte. (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 d'un nom raisonnable généré par une machine.

Pour Java, section 3.8 de la spec États :

Un identifiant est une séquence de longueur illimitée séquence de lettres et de chiffres Java dont le premier doit être une lettre Java. lettre Java.

0 votes

Votre réponse semble contredire les réponses de Kirill Osenkov et de DLeh au sujet du 511. Il serait bien que vous ayez une référence pour votre affirmation sur le C# car je crois que vous avez tort ici...

1 votes

@SerjSagan : Je viens juste d'essayer et c'est plus grand que 511, bien qu'il y ait es une limite. Je dirais que c'est toujours plus grand que les limites de la lisibilité et des noms générés par une machine raisonnable. Je vais éditer avec la limite précise à ce moment-là...

20voto

Greg Points 132247

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

Avec 128Mo, j'ai pu créer une classe (et une méthode) de 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;
}

?>

18voto

DLeh Points 838

Je viens de faire un test en C# Visual Studio 2010 (x64) : j'ai créé un identifiant :

int a123456789a123...;

Et répété. A 512 caractères, VS me donne l'erreur "Identifier trop long". Mais 511 caractères suffisent. (J'ai vérifié le nombre de caractères dans Word.)

Un autre exemple :

int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifierever_okaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;

13voto

Kirill Osenkov Points 3902

L'implémentation C# de Microsoft est de 511, celle de VB.NET de 1023.

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

0 votes

Votre réponse semble contredire la réponse de John Skeet. Ce serait bien si vous aviez une référence pour votre déclaration de 511 pour le C#.

5voto

Vanilla Points 367

En C# a une longueur de 511 caractères.

2 votes

L'IDE peut imposer certaines limites sur les lignes, mais la spécification C# n'impose aucune limite.

3 votes

Le compilateur, pas l'IDE. L'IDE ne colorisera cependant que les 511 premiers caractères du nom, et gardera le reste en noir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X