有没有人碰巧知道您选择的编程语言中方法名称的最大长度是多少?我打算将这个问题作为一个特定的C#问题,但我认为在整个频谱范围内了解它会很好。
还涉及哪些因素:
答案 0 :(得分:33)
对于C#,我不相信有指定的硬限制。 (例如,C#5规范的第2.4.2节没有给出限制。)Roslyn v2.2.0.61624似乎有1024个字符的限制;这超出了可读性的范围,甚至是一个合理的机器生成的名称。
对于Java,section 3.8 of the spec表示:
标识符是无限长度的 Java字母和Java的序列 数字,第一个必须是a Java信。
答案 1 :(得分:20)
PHP似乎仅受脚本内存限制的限制。
使用128Mb,我能够创建一个包含400万个字符的类(和方法)。
<?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;
}
?>
答案 2 :(得分:16)
我刚刚在C#Visual Studio 2010(x64)中进行了测试:制作了一个标识符:
int a123456789a123...;
重复一遍。在512个字符处,VS给出了错误“标识符太长”。 511虽然很好。 (在Word中检查字符数。)
另一个例子:
int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifiereverಠ_ಠokaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;
答案 3 :(得分:12)
微软的C#实现是511,VB.NET的实现是1023。
Visual Studio将只标记标识符的前511(VB3103)字符并将其余字符保持黑色。
答案 4 :(得分:4)
长度为511个字符。
答案 5 :(得分:3)
Common 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
?
这个答案忽略了方法名称的包名;这可以使长度加倍。
答案 6 :(得分:2)
进行中(OpenEdge)的限制是32个字符。
答案 7 :(得分:0)
在D中,我不知道情况如此,但我怀疑它是疯狂的,如> 100MB。这可能是一个不记忆的事情。这是基于我知道我和其他人已经遇到符号名称大约11kB的目标文件格式限制,并且已经修复了。
答案 8 :(得分:0)
在Java中,我认为没有给出长度限制。 See this from the online Sun Java Tutorial:
变量名称区分大小写。变量的名称可以是任何合法的标识符 - 一个无限长度的Unicode字母和数字序列,以字母开头......
与上述其他人一样,我猜测长度取决于可用内存。
答案 9 :(得分:0)
有趣!在Java中,正如其他人所说,没有限制(我从未想过长度!)但我认为你想避免使用长方法名称,因为这可能会影响可读性甚至心理映射(任何其他开发人员看着代码可能会忘记或想忘记方法名!)。
我相信“clean code”简单地谈论使用描述性的可说出名字。你也可以争辩一个长描述性的名称比短的更好,我想是一个完美的平衡。 这是我的拙见。