学习Effective C++已经很长时间,其中自己也把一些条款应用到日常工作中了,今天再次翻开此本,仍然发现一些新的内容和对一些已知内容有了新的理解。
“学会一种程序设计语言,是一回事儿;学会如何以此语言设计并实现有效的程序,又是一回事儿。”这是导读中的第一句话,自己也是一个项目经理,也有几个项目成员,有些是新进公司的人员,他们能够使用C++语言进行开发,可是写出来的代码总是有这样那样的问题,正是应了Effective C++中的这句话。
条款1:尽量以const和inline取代#define
在我们程序中,大部分的代码都已经这样处理了。可是我认为,#define还是在程序中起到很大的作用。象MFC,就大量的使用了#define的预编译功能来实现一些复杂的功能。是不是采用const和inline取代#define还是要取决于当前实现的功能。比如象消息映射一些功能,就很难用const和inline取代。
条款2:尽量以<iostream>取代<stdio.h>
自己在代码中从来没有用过iostream来格式化字符串和输出。对于输出一般更多的用于程序的调试,对于格式化字符串,这个又显的比较复杂,由于一般在代码很少需要输出很多的类中的结构信息,更多的还是字符串的操作。对于格式化字符串,由于代码中大量的使用CString类,所以CString::Format可以非常好的完成任务,对于输出一般采用的是OutputDebugString,这个函数需要传入的是一个C字符串,所以也就没有用于任何iostream上的功能。当然在项目中也有很多的时候需要输出到一个文件中,对于这种类型,如果是采用MFC来写的话,MFC已经提供类似的功能。如果程序中没有使用MFC来写,由于一些Unicode方面和文件处理的要求,很少会使用到iostream来处理。
待续