匈牙利命名法的辩思
随手打开8月要检视的代码,发现这次两个组的代码风格居然都选择了匈牙利命名法。也就正好借着这个机会谈谈这种命名法。
由于这种命名法的深厚群众基础,我先套用一句小龙的说法,我说的都是错的。请大家抱着兼听则明的态度看这篇文章,大部分资料来自网上,我不是原创只是整理者,请参见附录:
BTW:2006年前我自己也是一个匈牙利命名发的坚定拥护者,直到sonicmao给我打开另外一扇门。
1 匈牙利命名法的前世今生
匈牙利命名法,由1972年至1981年在施乐帕洛阿尔托研究中心工作的-程序员查尔斯·西蒙尼CharlesSimonyi发明。此人后来成了微软的总设计师,因为其祖籍是匈牙利(维基对这个命名有一些有趣的解释),固有此名。
匈牙利命名法的变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用途,紧跟着的就是程序员选择的任何名称。这个后半部分的首字母可以大写,以区别前面的类型指示字母。而在最前面加入前缀m_,s_,g_表示变量的作用域类型。匈牙利命名法的目标便于记忆,而且使变量名清晰易懂(一看变量就知道他是什么类型的),增强了代码的可读性,方便各程序员之间相互交流代码。
这个东东之所以那么流行当然拜微软所赐,随着MFC在90年代的灿然光辉影响了一代代程序员,再加上一些微软出的不错的书(比如《Windows程序设计》)推波助澜,而同时由于国内UNIX编程风格以及辩思氛围的不强,这个命名法几乎成了国内变量命名法的标准。甚至很多编码规范中会直接推荐使用匈牙利命名法。

本文探讨了匈牙利命名法的历史、错误应用及其在编程中的争议。作者指出,匈牙利命名法最初的目的是为了增强代码可读性,但实际上可能导致类型缩写的不一致性和重构困难。微软已不再推荐使用这种命名法。文章建议团队考虑其他命名规则,如去掉类型前缀,保留成员变量的m_前缀,或者采用GNU代码风格。
最低0.47元/天 解锁文章
1785

被折叠的 条评论
为什么被折叠?



