---
layout: post
title: c++ 请抛弃匈牙利命名法 - 变量命名代码风格的建议。
tagline: null
category: null
tags: []
published: true
---
我只针对c++码农们讲，其他语言不了解不过应该大同小异。曾几何时翻开21天学通c++系列等脑残入门书，都以匈牙利命名法示人（DWORD dwXXX, int nXXX, string strXXX)。
现在我可以负责任的告诉你，把类型名写在前面'''''屁'''''用都没有，对你没看错，就是这么坚决。原因如下：

1.现代的编译器早已经可以明显看出任意变量的类型，你把类型写在前面除了增加代码长度外没有任何好处。
2.真正的匈牙利命名法，是要

 

标注变量的种类（kind）而不是类型（type）

 

这有很大区别。举例：int door_width 表明这是门的宽度，而int nWidth狗屁都不是！写明种类有何好处呢？其中一大好处就是可以明显的看出错误并且使得代码更易读。举例：门宽：int door_width, 车长度：int car_length.当你写如下代码- int door_area = door_width * car_length; 这句代码本意是计算门的面积，但是当你看到代码，用door_width × car_length明显看出car和door不是一个种类，很容易看出错误。而如果你用nWidth × nLength那么恭喜你，除了能看出来类型是个int型之外，你狗屁错误也看不到。这点在代码很多很长的时候尤其突出。

所以，如果使用匈牙利命名法，请理解他的本意，是kind不是type！当然如果有人变态到把类型种类都写上我只能说你应该换个60吋显示器才能看全代码了。


Update by gitblog.io at 2014年5月5日 下午4:08:28
Update by gitblog.io at 2014年5月5日 下午4:08:28