问题标签 [hungarian-notation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1132 浏览

javascript - 如果匈牙利符号大多被贬低,为什么“构造函数的上驼峰与其他一切的下驼峰”如此受欢迎?

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

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

所以差异似乎只在表面:

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

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

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

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

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

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

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

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

0 投票
1 回答
232 浏览

php - PHP 匈牙利表示法的“Codesniffer”

我在我的项目中使用PHAN,想知道是否有某种代码嗅探器来验证代码是否符合 PHAN。

0 投票
10 回答
128554 浏览

hungarian-notation - `m_` 变量前缀是什么意思?

我经常在主要与游戏开发相关的教程、示例和其他代码中看到m_用于变量m_World、 、...)的前缀。m_Sprites

为什么人们m_要为变量添加前缀?

0 投票
1 回答
268 浏览

c++ - Visual Assist X 重命名符号如何工作?

我想从一段巨大的代码中删除匈牙利符号,但我不确定插件如何处理替换。我的意思是 - 如果我有:

然后我单击“pNothing”并使用 VA 重构工具将其重命名为“nothing”,是仅在此函数中重命名它还是将在整个项目中的每个函数和类中重命名所有名为 pNothing 的指针?

0 投票
1 回答
368 浏览

php - 匈牙利命名约定:混合型

我以这种方式将 HNC 用于 PHP: 中的变量$p_nIdp代表参数,即变量的范围,n代表类型(虽然 PHP 的类型很松散,但它给出了一些结构),所以这里是数字。HNC 中是否也有混合类型的类型前缀?

0 投票
2 回答
3826 浏览

c++ - WinAPI 中的 sz 和 pwsz 前缀

我现在对 CHAR 字符串和 WCHAR 字符串的 WinAPI 中的匈牙利符号前缀有点困惑。当我们使用 CHAR 字符串时,通常会使用这样的前缀:

我们有一个以零结尾的字符串 szString,所以一切都很好。但是当我们使用 WCHAR 字符串时,通常会使用这样的前缀:

它代表指向以零结尾的宽字符串的指针......但我们的类型看起来不像这样。指向以零结尾的宽字符串的指针是 WCHAR** 或 PWSTR*。我错了吗?为什么 sz 用于 CHAR 字符串而 pwsz 而不是 wsz 用于 WCHAR 字符串?

0 投票
1 回答
1522 浏览

java - Android 命名约定中的匈牙利符号

所以,我不是Hungarian Notation的忠实粉丝。今天,我公司的一位 Android 开发人员删除了此链接到有关 Android 开发的官方建议,令我惊讶的是,他们发现以 . 开头的所有字段名称很有用m

mSomeField我认为,这些名称可能有用的唯一情况是没有代码突出显示,在这种情况下,更容易看出哪些变量是本地的,哪些不是。但是现在任何 IDE 都可以显示这一点,对吧?那么,为什么在最新的 Android 代码中需要这些规则和约定呢?

更新:好吧,我的错,看起来这些建议是针对贡献者的(在这种情况下这是有道理的,他们希望保持相同的编码方式)。无论如何,有人告诉我,这经常在 Android 项目中使用。如果是这样,那么问题就在于这些项目。

0 投票
1 回答
882 浏览

vb.net - 文本框和相应标签的匈牙利符号的正确替代方法是什么?

尽管在 StackOverflow 上提出了无数问题,并且我在网上研究了无数文章,但我找不到关于如何避免对文本框及其相应标签使用匈牙利符号的明确答案。

假设我将一个文本框命名为Username. 本着避免使用匈牙利符号的精神,我可以将其对应的标签称为什么?

我唯一的选择是运行,UsernameTextBoxUsernameLabel我认为这与匈牙利符号原则上没有什么不同。

有无数的声音暗示我不使用匈牙利符号,但没有人提供单一的替代方案。

注意:我已经了解真正的匈牙利符号是什么,是的,我指的是错误但无处不在的使用。

0 投票
1 回答
155 浏览

java - java中是否有任何性能下降,因为“没有”原因扩展类?

我有一个在很多情况下都很有用的 Vector3i 类,但我发现自己扩展了它以使用类型系统来防止错误。

例如,我可能有一个“以自我为中心”的vector3i,它是世界上一个物体的局部,还有一个世界坐标vector3i。

两者自然不兼容,没有转换,对彼此毫无意义。

使用True Hungarian Notation将是一个很好的情况,但我正在扩展该类并且不添加任何新功能。

考虑到 JVM/Hotspots 优化,我是否会招致性能损失?

0 投票
1 回答
1763 浏览

javascript - 什么是匈牙利符号?

它在原生 Javascript、Jquery 或 Angular 中有任何用例吗?当我阅读有关在变量名前使用 $ 的内容时,我发现了这种表示法。$ 在 Jquery 中被大量使用,它与匈牙利符号也有关系吗?