最近写了个分类的程序,全是对文本的操作,到现在有4000行了吧,程序里全是map、it。定义了N多变量名、函数名等。太过于繁杂以至于自己都不清楚到底在操作那个变量,经常得用UE查看程序代码,在外面改好之后再拷进来。有时为某个英语单词的缩写而犹豫半天,考虑到其所能表示的意思,又不会使代码变得很冗长,伤脑筋啊~!(这些天我一直想买本《代码大全》来看看)
今天程序总算结束了,才有空在网上找了些命名的规范来看。大概的内容我都能明白,如:
匈牙利命名法的基本原则:
变量名=属性+类型+对象描述
即一个变量名是由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。下边是一些推荐使用的规则例子,你可以挑选使用,也可以根据个人喜好作些修改再用之。
⑴属性部分:全局变量: g_ 常量 : c_ 类成员变量: m_
⑵类型部分:指针: p句柄: h布尔型: b浮点型: f 无符号: u
⑶描述部分:初始化: Init临时变量: Tmp目的对象: Dst源对象: Src窗口: Wnd 下边举例说明:hwnd: h表示句柄,wnd表示窗口,合起来为“窗口句柄”。m_bFlag: m表示成员变量,b表示布尔,合起来为:“某个类的成员变量,布尔型,是一个状态标志”。
个人对下划线的命名法不是很感兴趣,但是受VC风格的影响,初期在程序中还是不自觉的使用了一些,于是造成了系统的小bug。
还有一点就是对程序的掌握能力。这个分类程序每次都要对测试集的文本进行读写,为了节省这段时间开销(自己也嫌每次手动打开比较烦)昨天晚上的时候,我尝试着在读取每一篇测试集时,将众多分类法(8×4种)同时实现。结果证明自己自作聪明了:测试单个文档时就使得我寝室那台可怜的机子处于Stop状态,而且无法知道是不是有死循环等bug,最后实在没耐心等下去了。今天过来把每个功能给拆散之后,发现果然有些错误的定义,如迭代器没有匹配到正确的容器上。而且大段类似的代码会让我看起来很晕。
说了这么多的中心思想是:将代码牢牢的控制在你能驾驭的范围内。