为什么不用匈牙利命名法

一直不喜欢匈牙利命名法,但周围的人几乎都推荐使用匈牙利命名法,尤其是很多计算机老师。大概他们都是伴随着微软长大的吧,匈牙利命名法见得多了就开始信奉了。

不过今天总算是找到支持者了。Imperfect C++ 里举了这么一个例子:

typedef map<string, map<string, int> > string_2_string_2_int_map_map_t;

string_2_string_2_int_map_map_t s2s2immIncludesDependencyTree;

不许笑!这可是实实在在出现在项目里的代码。真觉得,喜欢匈牙利命名法的人写代码時大概经常复制粘贴吧。

当然,并非微软的命名方式都是坏的,比如因为MFC而流行起来的 m_value ,就是在数据成员的名字前加上 m_ 前缀,我就很喜欢。Imperfect C++ 的脚注里这样评价道:

You see, there is something good about MFC!

嗯,这本书真对我胃口。