0

至少在 StackOverflow 上似乎是这样,匈牙利符号通常被认为是一件坏事(尽管少数人仍然赞成)。

现在,在过去几个月我一直在进行大部分编码的 JavaScript 世界中,似乎已经接受了一种本质上非常相似的命名约定,但我还没有看到有人反对它,那就是UpperCamelCase命名对象构造函数vslowerCamelCase命名其他所有内容。

所以差异似乎只在表面:

  • 匈牙利符号使用前缀,而 JavaScript 使用大小写。
  • 匈牙利符号可以区分很多东西,而 JavaScript 只能区分“对象构造函数”和“非对象构造函数”。

有些人喜欢说“systems Hungarian”与“applications Hungarian”不同,前者表示类型,后者表示类型未涵盖的内容。在这种情况下,“systems Hungarian”通常仍然被认为是坏的,而“applications Hungarian”可能被认为是好的。

JavaScript 驼峰式大小写约定似乎更像系统匈牙利语,因此在这一点上没有任何优点。

人们反对匈牙利符号的观点似乎仍然适用于 JavaScript 对象构造函数:

  • 编译器无论如何都知道类型。
  • IDE 在这方面要好得多。
  • 当类型改变时它太脆了。
  • 它使代码变得杂乱无章,更难阅读。

那么这个 JavaScript 约定有什么不同呢?它可以在更一般的匈牙利符号不合适的地方使用?

是不是缺少好的 JavaScript IDE?其有限的使用范围是否使它不那么糟糕?是因为动态语言并没有太多的类型吗?因为它不能被过度使用,所以这不是问题吗?

(如果这属于programmers.SE而不是SO,请迁移。)

4

1 回答 1

2

毕竟它更像是“应用程序匈牙利语”。

Javascript 不知道您的函数是构造函数还是普通函数。并且像调用普通函数一样调用构造函数可能会导致非常奇怪的不良结果(除非您使用的是 ES5 严格模式)。

我也看不到 IDE 将如何帮助您。IDE 唯一能做的就是阻止您调用var x = new plainFunction();and var y = Constructor();,这意味着首先使用匈牙利符号。

我也看不出使用该符号如何使代码更难阅读。

于 2012-08-29T10:14:55.067 回答