问题标签 [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.
c++ - 您如何跟踪每个功能提供的异常安全保证
在编写异常安全代码时,需要考虑所有调用函数的异常安全保证(none、basic、strong 或 no-throw)。由于编译器没有提供任何帮助,我认为函数命名约定在这里可能会有所帮助。是否有任何一种既定的符号标准来指示功能提供的异常安全保证水平?我在想类似匈牙利语的东西:
编辑:我同意这种命名约定丑陋的评论,所以请允许我详细说明我提出建议的原因。
假设我重构了一些代码,并在该过程中更改了函数提供的异常安全级别。如果保证已经从强到基本(也许通过提高速度来证明),那么每个调用重构函数的函数都必须重新考虑它们的异常安全性。如果保证的更改也触发了函数名称的更改,它将允许编译器帮助我至少标记更改函数的所有用途。这是我建议上述命名约定的理由,尽管它是有问题的。这与 const 非常相似,其中函数 const 的变化会对其他调用函数产生级联影响,但在这种情况下,编译器会提供非常有效的帮助。
所以我想我的问题是,人们养成了什么样的工作习惯,以确保代码真正满足他们预期的异常保证,尤其是在代码维护和重构期间。
php - PHP stdClass 的适当匈牙利符号前缀是什么?
如果有,那就是。
(例如 nInteger、chChar、cCount 或 rgArray。)
intellij-idea - Intellij IDEA 中的匈牙利符号
我必须对使用匈牙利表示法(以及系统匈牙利语)的遗留代码进行一些维护。不幸的是,我将其全部从代码库中清除是不切实际的。
本地 Eclipse 用户声称可以配置 Eclipse,以便自动生成的访问器和诸如此类的东西忽略匈牙利语前缀(这可能是他们能够使用它们这么久的原因)。
IDEA 10.5 中是否有类似的功能?如果 'find usages' onm_sInstruction
足够聪明,能够意识到这getInstruction()
是一个 getter,并给我“你想搜索访问器吗?”,那就太好了。例如,提示,或者如果“生成 getter 和 setter”可以告诉这个类已经为几乎所有字段提供了它们。
language-agnostic - 与匈牙利符号相反?
大多数程序员都知道一种叫做“匈牙利表示法”的东西,每个变量都有一个很好的前缀来表示它的数据类型,即
虽然这种表示法已经失宠,但我看到(在工作、互联网等)很多数据类型指示符作为“后缀”添加到变量名称中,即
当数据类型后缀为变量名时,是否有此名称?
编辑:澄清......,这样的东西有一个独特的名字吗?如果没有,一些关于如何称呼它的简洁想法肯定会受到赞赏。
java - Eclipse 中适用于匈牙利风格成员的 Getter 和 Setter
我正在从事的项目规定类成员变量的匈牙利符号。例子:String m_foo;
是否可以让 Eclipse 在生成 getter 和 setter 时去掉匈牙利前缀?我正在使用 Helios,它建议(毫不奇怪)getM_foo
and setM_foo
,但我想要getFoo
and setFoo
。代码模板看起来没有帮助。
resharper - 有没有办法为 ReSharper 6 制作更多自定义命名样式?
我的项目有一个编码约定:对于局部变量(内部方法):使用格式 [prefix][variable name]
如果变量是原始类型(例如 Integer、Byte、String...),[Prefix] 将是数据类型的第一个字符。
例子:
Resharper 有没有办法为这种情况创建自定义命名规则?
谢谢。
c# - 我应该在 C# 中使用匈牙利应用程序符号吗?
我知道这个问题已经被问了一点,从表面上看,这个问题没有明确的是或否答案,但我仍然对某些事情感到有些困惑。
通常当我编程时,我会遵循一些关于前缀的规则:
- m_ 在成员面前
- p_ 在属性前面
- s_ 在 static 前面
- a_ 在参数前面
- l_ 在局部变量前面
我现在得到了一份新工作,我注意到代码中没有使用前缀。我问为什么,他们回答说 IDE 完成了跟踪什么是成员变量和什么是局部变量的所有工作。现在我在想,可能是这样,但是使用前缀不是更容易吗?
我的意思是,如果我有一个成员、一个静态变量和一个名为“robot”的局部变量,那么在编写方法时引用它会不会很痛苦?这可能是一个不切实际的例子,但我喜欢在我的脑海里有一个很好的规则集,我可以始终如一地应用它,即使是在不切实际的情况下。
这个例子是否证明使用匈牙利符号是合理的?
我想我会制作一个优点/缺点列表并在我了解更多信息时对其进行编辑。
反对匈牙利语的论点:
Class.Robot
或者Robot
this.robot
robot
不需要匈牙利语。
柜台:
仍然存在不一致之处,机器人可能以不同的方法表示不同的东西。为了保持一致,您应该在每个 Robot 变量之前添加 Class 或 this(或无)前缀。
最重要的是,假设您要访问静态变量 Strawberry,您怎么知道未定义名为 Strawberry 的成员变量?也许它是在另一个你看不到的文件中定义的,所以你可能会得到意想不到的结果。现在您可能会说这可以通过 IDE 看到,但我认为使用前缀更好,因为您可以看到您所引用的内容,而您可能会错过 IDE 告诉您的内容。当然,您也可以使用 this/Classname 前缀,但这违背了不使用匈牙利符号的目的。
反对匈牙利语的论点:
如果在字段和变量的命名中使用匈牙利符号,则会违反此规则。匈牙利符号的使用在 C++ 代码中变得普遍,但 C# 的趋势是为变量使用更长、更具描述性的名称,这些名称不是基于变量的类型,而是描述变量的用途。
柜台:
我提到的前缀不是基于变量的类型,前缀确实指定了变量的用途。
反对匈牙利语的论点:
现代代码编辑器(例如 Visual Studio)可以轻松识别变量或字段的类型信息,通常通过将鼠标光标悬停在变量名称上。这减少了对匈牙利符号的需求。
柜台:
虽然这是真的,但我自己几乎从不将鼠标悬停在变量名上方,除非发生错误。相反,使用匈牙利表示法,您可以立即看到变量在类中的位置。
评论:
Microsoft 不建议对文件名使用匈牙利符号吗?我读到用 I 前缀接口文件是一种约定,这是匈牙利符号的一种形式。虽然这与我上面的问题没有直接关系,但它确实提出了匈牙利符号有时被推荐的观点。
asp.net - 用于验证 VB.NET 中遵循匈牙利符号的命名样式的工具
我正在维护一个用 VB.NET 编写的旧版 ASP.NET 网站。我们的客户强迫我们使用匈牙利符号来声明变量等:
例如:
有没有像 FxCop、StyleCop、ReSharper 这样的工具可以帮助我确定违反这种命名风格的代码?
hungarian-notation - old-school Hungarian Notation "mz" prefix
Every so often, I need to dig into older APIs, and I keep running across functions with an "mz" prefix for API calls. (Example, functions like mzListDocuments()
I'm just curious what this "mz" stands for in this context. I'm aware of old Hungarian notation ideas like "m_" for member objects, etc, but Google is failing me on the "mz" prefix.
I initially assumed it was an internal company standard from the software vendors, but I've seen it from multiple vendors, so now I'm wondering if it was once very common, or even a recommended standard.
I can't remember all of the vendors, but currently I'm seeing this with a document scanning system's API. The API is older, it used DCOM, and the functions all return integer data types. The software was written in c++.
The APIs are meant to be called from VBScript, VB, or .NET. The mz prefix is in front of all function names, and constants are all prefixed with "MZ_" (Examples "MZ_FORMATPDF" and "MZ_FORMATMSWORD").
Based on the context all I can tell is that the "mz" prefix means" we're using API members".
This could be meaningless, and it's not like I need to know the answer to this in order to be productive. This is more a curiosity question than anything else.
fortran - Fortran 中的匈牙利表示法
它被认为是好的还是坏的做法?我的一个朋友告诉我,一般来说,现在大多数语言都认为这不是一个好的做法,但他认为他听说 fortran 不是这种情况。这是真的?如果这是真的,为什么?