最大方法名称长度
有没有人碰巧知道在你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中没有限制(我从来没有想过这个长度!),但是我认为你想避免使用一个长的方法名,因为这会影响到可读性,甚至心理映射(任何其他开发人员可能会忘记或想忘记方法名称!)。
我相信“ 干净的代码 ”简而言之就是使用描述性的可发音名称。 你也可以争论一个长的描述性的名字比一个短的好,我想是一个健全的平衡。 这是我的卑微观点。