[C++]C++学习的一些建议
收到学弟们的一些C++学习笔记,很有感触。C++语言是一门很宏大奇妙的计算机语言,回顾自己学习与研究C++的经历,很漫长、很艰辛也很有乐趣。总结这些年的经历,对于C++的学习有如下建议:
- 遵循C++代码编程规范。经过近三十年的发展,C++已经有了一整套的代码编程规范,如private variable的命名方法,类的命名方法,代码编写格式等。网络上有类似的文章下载,图书馆也有《C++编程规范(中文版)》(ISBN:7-115-14205-X)可以参考。要尽可能地在编程训练中加强编程规范的练习,这样进入工程团队中方能更好地与别人进行代码沟通。
- 采用Doxygen格式进行代码注释。这也是代码规范的一个重要方面。在编写注释时,也要采用标准格式,这样可以通过Doxygen来自动生成代码文档。
- 要将类封装每个样例。许多参考书中的样例很少采用类来进行封装,而仍是采用函数。这并不是C++所提倡的。应该将每个样例都写成类的形式,由main程序来进行类实例创建后调用类操作完成。对于小样例来说,这会增加不少的编程工作,但只有这样才能更好地了解类的调用机制,与参数传递方式。“类的组合与函数的组合是完全不同的”,因此只有不断地用类,而非函数,才能真正提高自己C++的功力,更确切地说是提高C++在面向对象编程方面的功力。
- 要熟悉标准C++技巧。许多参考书的样例代码中,其实存在三种不同的语言,大部分是C,一部分是托管C++,而只有极少数的是标准C++。例如你在读取文件时采用了纯C的方式,而不是标准C++的方式。标准C++是通过fstream来进行文件访问的。这说明你所参考的书籍作者并没有能厘清上述语言的差异。要真正掌握C++,并能编写出移植性高的程序,只有花力气在标准C++的学习上。《C++ Primer》与《Thinking in C++》是最好的参考。
- 要学习单元测试技术。一般初学者往往采用注释的方式将测试通过的代码注释掉。这样的方式最简单,但最不能在多人合作的项目中使用,因此是一个很不好的编程习惯。要学习利用CppUnit或者MiniCppUnit等库来进行单元测试,这样既不用注释代码,而且能自动化单元测试,是最符合软件工程的编程习惯,一定要花些时间来学习。
- 要通过实例学习泛型技术。根据我的经验,容器与泛型是C++中相当难于掌握的内容,如果没有很好的样例,只停留在理论说明上,是很难深刻领会的。因此要对泛型技术有所了解,应该从开源程序中来进行学习。虽然C++中最好的泛型库是Boost C++ Libraries,但我并不建议从Boost入门。我更推荐TCLAP库。TCLAP库是用来解析命令行参数的,就是将 int main( int argc,char** argv)中的argv参数进行解析,获得一系列的参数值。这个库很有用,且其代码都是采用泛型技术编写的,很精巧,适合阅读!先参考examples 目录中的样例,编译后学习 TCLAP 的使用,然后再阅读其代码。只有这样方能真正理解为什么要用泛型,泛型思想与面向对象思想之间存在哪些本质性的差异。
希望上述建议能对C++学习有所帮助。如有什么学习心得或者困难,请Gmail给我。我很乐意与你们一起研讨C++技术。