我经常在教程,示例和其他主要与游戏开发相关的代码中看到m_
用于变量(m_World
,m_Sprites
...)的前缀.
为什么人们m_
为变量添加前缀?
我知道匈牙利语所指的内容 - 将有关变量,参数或类型的信息作为其名称的前缀.每个人似乎都狂热地反对它,尽管在某些情况下它似乎是一个好主意.如果我觉得有用的信息被传授,为什么我不能把它放在那里?
另请参阅:人们是否在现实世界中使用匈牙利命名惯例?
我从来都不是匈牙利表示法的粉丝,除非你做了一些非常低级的编程,否则我总是觉得它很无用,但在每个C++项目中,我都采用了某种匈牙利符号政策,并且使用一些"非真正匈牙利"的前缀作为m_表示字段,s_表示静态,g_表示全局变量等等.
很快我意识到它在C#中有多么无用,并逐渐开始放弃我所有的旧习惯......但是'm_'的事情.我仍然在私有字段上使用m_前缀,因为我真的觉得能够区分参数,本地和字段非常有用.
MSDN上字段页面的命名约定说我不应该,但它没有说明原因(例如Google的惯例通常倾向于合理化他们的处方).
有没有理由我不应该或只是风格问题.如果是后者,前缀通常被认为是一种不好的风格,我是否可以期待其他人在代码库上做出负面反应?
我遇到了很多名为k
+ someVariableNameHere
或k
+ APILibraryName(2Char)
+ 的Core Foundation变量的例子someVariableNameHere
.这个前缀K
表示什么?
例子包括:
kGLPFAStereo
kCollectionLockBit
kSetDebugOption
由于C#是强类型的,我们真的需要为变量添加前缀吗?
例如
iUserAge
iCounter
strUsername
Run Code Online (Sandbox Code Playgroud)
我以前曾经用过前缀,但是前进我看不出任何好处.
是值得学习惯例还是可读性和可维护性的祸害?
常量是以k
(例如k_pi
)为前缀的常见做法.但这k
意味着什么?
它只是c
已经意味着char
什么?
这个问题是寻找匈牙利表示法的好例子,所以我们可以把这些集合汇集在一起.
编辑:我认为,匈牙利的类型是不是必要的,我希望更具体的例子,其中它增加了可读性和可维护性,像乔尔给出了他的文章(按我的答案).
您使用哪种命名约定?为什么?
我喜欢使用employeeNameTextBox,因为:
注意:我使用的是全名而不是缩写(例如"tb"),因为它符合MS的命名约定,即避免使用缩写.
在Perl中,对任何东西的引用都是一个简单的标量,并且有$
sigil.有时很难说它是什么样的参考.
我个人为带有字母的引用添加变量名称,这表示引用类型.例子:
my $aValues = []; # arrayref
my $hValue = {}; # hashref
my $oValue = bless {}; # object
my $sValue = \(my $s = 'foo'); # scalarref
...
Run Code Online (Sandbox Code Playgroud)
我见过这种符号的支持者和反对者.你用它吗?它有任何缺点吗?