至少在StackOverflow上,匈牙利表示法通常被认为是一件坏事(尽管少数人仍然赞成)。
现在,在过去几个月里,我一直在做大部分编码的JavaScript世界中,似乎已经接受了一种命名约定,这种约定本质上非常相似,但我还没有看到任何人反对它,即UpperCamelCase
用于命名对象构造函数,而lowerCamelCase
用于命名其他所有内容。
因此,差异似乎只是表面上的:
- 匈牙利表示法使用前缀,而JavaScript使用大小写
- 匈牙利符号可以区分很多东西,而JavaScript只能区分"对象构造函数"one_answers"非对象构造函数"
有些人喜欢说"系统匈牙利语"与"应用匈牙利语"不同,前者表示类型,后者表示类型未涵盖的内容。在这种情况下,"匈牙利系统"通常仍然被认为是坏的,而"匈牙利应用程序"可能被认为是好的。
JavaScript骆驼式大小写约定看起来更像匈牙利系统,因此在这一点上不会有任何优点。
人们反对匈牙利表示法的观点似乎仍然适用于JavaScript对象构造函数:
- 编译器无论如何都知道类型
- IDE在这方面做得更好
- 当类型改变时,它太脆弱了
-
它把代码弄乱,使代码更难阅读
那么,在更通用的匈牙利表示法不适用的情况下,这个JavaScript约定有什么不同
是不是缺少好的JavaScriptIDE?它有限的使用面积是否使它不那么糟糕?是不是因为动态语言在类型方面没有太多?这不是一个问题,因为它不会被过度使用吗?
(如果这属于程序员。SE而不是SO,请迁移。)
毕竟它更像是"匈牙利应用程序"。
Javascript不知道您的函数是构造函数还是纯函数。把构造函数当作一个普通函数来调用可能会导致非常奇怪的意外结果(除非您使用的是ES5严格模式)。
我也看不出IDE会对你有什么帮助。IDE唯一能做的就是阻止您调用var x = new plainFunction();
和var y = Constructor();
,这意味着首先使用匈牙利表示法。
我看不出使用这种符号是如何使代码更难阅读的。