由于各种不便的原因,帖子只好写得没头没尾,同行都知道……这是我给我的一位同行铁哥们儿的一封聊天email的选段,贴给这里的哥们儿们………………
1,他们有用“匈牙利命名法”,但是就一个“DWORD”变量,你就会看到“w”、“i”甚至“b”的前缀。而其他类型,如class名称等,那就是什么“前缀”都有。
2,所有的结构体数组或链表,都用指针加lCount的方法实现,看不到vector<>,看不到CArray等,一问,竟然告诉我自己写链表是为了“方便排序”(不是什么插入排序,也不是为了折半查找什么的,只不过冒个泡而已,我估计八成是因为不会用标准库或者MFC的类)。
3,套在结构体里的结构体,经常用指针,你定义一个结构体来使用,总是不得不再为其成员变量new一下。号称是为了减少结构体尺寸,节约内存?!
4,一个产生数据的函数,不是让调用者申请内存并提交,而是从函数内部申请内存。这到也罢,但昨天看到一个函数,里面几个分支上,竟然既有用malloc来申请的,又有用new申请的!天!
5,处理PCM波形数据,也用malloc,管它几十兆的内存配置量,毫不在乎。大手笔。
6,一个类里面的若干个public方法,竟然是相辅相成,不可分割的,它们简直就是从一个超长函数,硬砍开的,更别提什么内俱、耦合了。
7,一个规模不算很小的应用软件,让单奔儿一个人(就是我)来做,时间还卡的特紧特紧。最高目标是“如期交给客户”,而不管交出去的是个什么怪物。
8,完全没有正经积累的模块库组件库,都散落在各个工程师的电脑里。以前已经搞了N年的程序开发,也积累了一些代码,有个简单的CVS,但是代码没有一行注释,模块没有一份文档,模块的使用者,除原作者以外,都得先“看Code”。
9,用于debug的CString::Format()和AfxMessageBox()在最终代码里时隐时现。很多是AfxMessageBox()注释掉了,但是CString::Format()还在。
10,所有的常量、字符串都“Hard Code”在代码里。Win32 Resource形同虚设。字符串没有_T(""),只要改用_UNICODE编译,保管全瞎。
9,“这个不需要我们做”、“一般不会有那么大的wav文件”、“客户的需求不能什么都满足,否则没完没了”……工作的时候,我的大脑里反复重复着 窦唯 的那句歌词 “噢,我的天,高级动物……~”