最大方法名称长度

有没有人碰巧知道在你select的编程语言中方法名的最大长度是多less? 我打算把这个问题作为一个C#的具体问题,但我认为这将是很好的知道各个方面。

还有什么因素:

  • 语言规范是否限制了这一点?
  • 编译器限制它到什么地步?
    • 在32位和64位机器上有区别吗?

对于C#我不相信有一个特定的硬限制。 (例如,C#5规范的第2.4.2节没有给出限制。)Roslyn v2.2.0.61624似乎有1024个字符的限制; 这超出了可读性的界限,甚至是一个明智的机器生成的名字。

对于Java, 规范的第3.8节指出:

标识符是Java字母和Java数字的无限长度序列,其中第一个必须是Java字母。

PHP似乎只受限于脚本的内存限制。

128Mb,我能够创build一个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; } ?> 

微软的C#实现是511,VB.NET的实现是1023。

Visual Studio将只对标识符的前511个字符(1023个字符)进行着色,并保持其余的黑色。

我刚刚在C#Visual Studio 2010(x64)中做了一个testing:做了一个标识符:

 int a123456789a123...; 

并重复。 在512个字符,VS给我的错误“标识符太长”。 511虽然是好的。 (在Word中检查字符数。)

另一个例子:

 int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifiereverಠ_ಠokaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511; 

在C#中是511个字符的长度。

Common Lisp符号的名字是string; string具有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 ? 

此答案忽略方法名称的包名称; 这可以使长度增加一倍。

进行中(OpenEdge)的限制是32个字符。

在DI不知道这是这种情况,但我怀疑这是疯狂的东西像> 100MB。 这可能是一个失忆的事情。 这是基于知道我和其他人已经遇到符号名称约为11kB的目标文件格式限制,并且这已被固定。

在Java中,我相信没有给出长度限制。 从在线Sun Java教程中查看:

variables名称区分大小写。 一个variables的名字可以是任何合法的标识符 – 一个以字母开头的无限长的Unicode字母和数字序列。

像上面的其他人一样,我猜测这个长度取决于可用内存。

有趣! 在其他人所说的Java中没有限制(我从来没有想过这个长度!),但是我认为你想避免使用一个长的方法名,因为这会影响到可读性,甚至心理映射(任何其他开发人员可能会忘记或想忘记方法名称!)。

我相信“ 干净的代码 ”简而言之就是使用描述性的可发音名称。 你也可以争论一个长的描述性的名字比一个短的好,我想是一个健全的平衡。 这是我的卑微观点。