C++是自己的第一工作语言,我深刻的喜欢着这门语言,因为我觉得他有着许许多多的特性值得我去挖掘,诚如一门绝世武功,在高手手里总能运用自如,但是在普通人的手里,却只是普通的工具而已。开发语言在发展,虽然C++可能还存在着这样那样的不足,而且不太适合于某些开发需求,但是,我相信,每一个喜欢和运用C++的朋友,都是完美主义者,他们相信自己,相信自己可以很好的控制诸多不可预知的因素。我仍然不是一个C++高手,因为在C++的路上我还有很长的路要走,但是,至少,我喜欢C++! 我想写一些我的C++技巧总结,可能有些你已经在用,也有可能你觉得这些技巧很无聊,没关系,谁都有谁的开发习惯,无论如何,C++一直很棒。
1). 结对编程
第一次听这个概念间看梁兆新先生的书的时候提出的。我们的思维总是会有考虑不周全的点时候,结对编程可以帮助我们少犯一些编程方面的错误。例如,我们在写大括号的时候,先直接写好左右括号,而不是先写好左括号,然后,等着这段代码写完后再写右括号。当然这是小的问题,结对编程更重要的时候是我们用在指针方面。声明指针后并分配内存后,第一时间想到的是在什么地方开始销毁指针,以防止内存泄露。
2). 使用string来代替char*
你是在使用C++,而不是C,虽然char*或是char[]很灵活,但是,你却要为此做大量的工作。不需要了,C++已经替你做到了。std::string和std::wstring, 使用标准的C++字符串,定义灵活,使用方便,你不必理会他如何管理,你只需要使用他即可。在多数情况下,他可以满足你的大多数需求。
3). 统一的代码风格
更多的人使用匈牙利命名,虽然这种命名很棒,不过你仍然可以有自己的风格。以前的开发部门总监是个大牛,他经常在Linux环境下开发C++程序。对于变量的定义,他不喜欢大小写混输,你更喜欢普通变量全部用小写加下划线来表示,这一点影响了我,在linux下面编程的人的习惯是这样的。使用空格来代替制表符,这一点可以让你在无论何种编辑器下面,看到的代码格式都是一致的,而不受编辑器对于制表符的定义的影响。
4). 从GCC开始学习和使用C++
虽然Visual C++或者是C++ Builder这样的IDE很棒,但是,他们无疑做了许多的工作,虽然这些工作提高了你的开发和工作效率,但是,却让你了解了更少的编译的过程。使用一个纯文本编辑器,带有语法高亮功能,例如VIM, 使用gcc来编译程序,自己写makefile, 使用gdb来调试程序。可能你需要在不同的环境下来回切换,不过,没关系,你需要的是习惯这种环境。visual c++ 2010确实有许多不错的特性,但是,在我的4G内存的机子上跑得依旧很吃力,但是,刚才提到的开发环境不会有这样的感觉。
5).使用定义的常量来代替数字等常量
当代码中出现 a+= 10; 时,我们不知道这个10代表什么意思,或者说,你需要为这个10做一点的注释,那不如麻烦一点,将他定义为一个常量,或者用#define WIDTH 10,或者用const int width = 10; 至少我们在代表中表示 a+= width; 的时候可以清楚他所表示的含义。
6). 关于指针的销毁
指针的销毁很常用,我们需要先将指针delete,然后再将其指向空NULL,我一般喜欢定义一个宏来进行操作,看起来简洁又大方:
#define FREE(x) if(x) delete x; x = NULL;
7). 使用C++风格的类型转换
虽然在C里面采用显式的类型转换很方便,但是,那是不安全的。C++自己有一套自己的类型转换,包括dynamic_cast, static_cast, reinterpret_cast, const_cast,建议使用。
8). STL容器,你的好朋友
无论是vector,还是set,还是stack,这些STL容器的熟练使用,可以让你在开发过程中事半功倍。还有泛型算法,结合STL容器,可以解决你许多的算法问题。
9). 合理命名用别名
typedef在适当的时候使用,可以提高代码的可读性。注意,你的代码不仅是要让机器读的,也要让人也可以读得懂。
10). 不错的C++扩展库: boost
boost解决了许许多多你可能一直困惑的问题。虽然有时候你可能更喜欢自己封装一些算法,但是,如果这些算法已经有更加专业的人实现了,那么请不要再重复发明轮子。当你仔细了解boost后,我认为你会喜欢她的。
阅读(2422) | 评论(2) | 转发(7) |