至少在 StackOverflow 上似乎是这样,匈牙利符号通常被认为是一件坏事(尽管少数人仍然赞成)。
现在,在过去几个月我一直在进行大部分编码的 JavaScript 世界中,似乎已经接受了一种本质上非常相似的命名约定,但我还没有看到有人反对它,那就是UpperCamelCase
命名对象构造函数vslowerCamelCase
命名其他所有内容。
所以差异似乎只在表面:
- 匈牙利符号使用前缀,而 JavaScript 使用大小写。
- 匈牙利符号可以区分很多东西,而 JavaScript 只能区分“对象构造函数”和“非对象构造函数”。
有些人喜欢说“systems Hungarian”与“applications Hungarian”不同,前者表示类型,后者表示类型未涵盖的内容。在这种情况下,“systems Hungarian”通常仍然被认为是坏的,而“applications Hungarian”可能被认为是好的。
JavaScript 驼峰式大小写约定似乎更像系统匈牙利语,因此在这一点上没有任何优点。
人们反对匈牙利符号的观点似乎仍然适用于 JavaScript 对象构造函数:
- 编译器无论如何都知道类型。
- IDE 在这方面要好得多。
- 当类型改变时它太脆了。
它使代码变得杂乱无章,更难阅读。
那么这个 JavaScript 约定有什么不同呢?它可以在更一般的匈牙利符号不合适的地方使用?
是不是缺少好的 JavaScript IDE?其有限的使用范围是否使它不那么糟糕?是因为动态语言并没有太多的类型吗?因为它不能被过度使用,所以这不是问题吗?
(如果这属于programmers.SE而不是SO,请迁移。)