当前位置:  开发笔记 > 编程语言 > 正文

最大方法名称长度

如何解决《最大方法名称长度》经验,为你挑选了5个好方法。

有没有人碰巧知道您选择的编程语言中方法名称的最大长度是多少?我打算将这个问题作为一个特定的C#问题,但我认为在整个范围内了解它会很好.

涉及的因素有哪些:

语言规范是否限制了这个?

编译器将其限制为什么?

32位与64位机器有什么不同?

Jon Skeet.. 35

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

对于Java,规范的3.8节说明:

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


Greg.. 20

PHP似乎仅受脚本内存限制的限制.

使用128Mb,我能够创建一个包含400万个字符的类(和方法).

'; } }");
    new $className();
    $i *= 2;
}

?>


DLeh.. 17

我刚刚在C#Visual Studio 2010(x64)中进行了测试:制作了一个标识符:

int a123456789a123...;

并重复.在512个字符处,VS给出了错误"标识符太长".511虽然很好.(在Word中检查字符数.)

另一个例子:

int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifierever?_?okaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;

我其实读完了.对我的雇主感觉不好. (2认同)


Kirill Osenk.. 12

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

Visual Studio将仅标记标识符的前511个(1024个VB)字符,并将其余字符保持为黑色.



1> Jon Skeet..:

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

对于Java,规范的3.8节说明:

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



2> Greg..:

PHP似乎仅受脚本内存限制的限制.

使用128Mb,我能够创建一个包含400万个字符的类(和方法).

'; } }");
    new $className();
    $i *= 2;
}

?>



3> DLeh..:

我刚刚在C#Visual Studio 2010(x64)中进行了测试:制作了一个标识符:

int a123456789a123...;

并重复.在512个字符处,VS给出了错误"标识符太长".511虽然很好.(在Word中检查字符数.)

另一个例子:

int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifierever?_?okaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;


我其实读完了.对我的雇主感觉不好.

4> Kirill Osenk..:

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

Visual Studio将仅标记标识符的前511个(1024个VB)字符,并将其余字符保持为黑色.



5> Doug Currie..:

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
? 

这个答案忽略了方法名的包名。这可能会使长度加倍。

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有