Подтвердить что ты не робот

Максимальная длина имени метода

Кто-нибудь знает, какая максимальная длина имени метода находится на вашем языке программирования по выбору? Я собирался сделать этот вопрос конкретным С#, но я думаю, было бы хорошо узнать по всему спектру.

Каковы также факторы:

  • Ограничивается ли спецификация языка?
  • Что ограничивает его компилятор?
    • Разве это отличается от 32-битных и 64-битных машин?
4b9b3361

Ответ 1

Для С# я не верю, что указан жесткий лимит. (Раздел 2.4.2 спецификации С# 5 не дает предела, например.) Roslyn v2.2.0.61624, похоже, имеет ограничение в 1024 символа; это выходит за рамки читаемости и даже разумного машинного имени.

Для Java раздел 3.8 спецификации:

Идентификатор является неограниченной длиной последовательность букв Java и Java цифры, первая из которых должна быть Java-письмо.

Ответ 2

PHP, по-видимому, ограничен только предел памяти script.

С 128 Мб я смог создать класс (и метод) с 4 миллионами символов.

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

?>

Ответ 3

Реализация Microsoft С# - 511, реализация VB.NET - 1023.

Visual Studio только раскрасит первые 511 (1023 для VB) символов идентификатора и сохранит остальные черные.

Ответ 4

Я только что сделал тест в С# Visual Studio 2010 (x64): сделал идентификатор:

int a123456789a123...;

И повторил. При 512 символах VS дает мне ошибку "Идентификатор слишком длинный". 511 в порядке. (Проверено количество символов в Word.)

Другой пример:

int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifiereverಠ_ಠokaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;

Ответ 5

в С# имеет длину 511 символов.

Ответ 6

Общие имена символов Lisp - это строки; строки имеют предел длины array-dimension-limit

Значение array-dimension-limit представляет собой положительное целое число, которое является верхней исключительной границей для каждого отдельного измерения массива. Эта привязка зависит от реализации, но не будет меньше 1024. (Разработчикам рекомендуется сделать этот предел настолько большим, насколько это практически возможно, не жертвуя производительностью.)

На практике это может быть довольно большим

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
? 

В этом ответе игнорируется имя пакета имени метода; это может удвоить длину.

Ответ 7

in progress (OpenEdge) предел равен 32 char.

Ответ 8

В D Я не знаю, что это так, но я подозреваю, что это нечто безумное, как > 100 МБ. Это может быть проблема с памятью. Это основано на знании, что я и другие люди столкнулись с ограничением формата объектного файла около 11 КБ для имен символов и что это исправлено.

Ответ 9

В Java, я считаю, что предел длины не указан. Посмотрите это в онлайн-учебнике Sun Java:

Переменные имена чувствительны к регистру. Имя переменной может быть любым юридическим идентификатором - бесконечной последовательностью букв и цифр Юникода, начиная с буквы...

Как и другие выше, я бы предположил, что длина зависит от доступной памяти.

Ответ 10

Интересно! В Java, как говорят другие, нет предела (я никогда не думал о длине!), Но я думаю, что вы хотите избежать длинного имени метода, поскольку это может повлиять на читаемость и даже ментальное отображение (любой другой разработчик, который смотрит на код, может забыть или хотите забыть имя метода!).

Я верю, что чистый код" в двух словах говорит об использовании описательных объявляемых имен. Вы могли бы также утверждать, что длинное описательное имя лучше, чем короткое, я думаю, что баланс звука. это мой скромный взгляд.