对于boost在实际项目中的使用应该有一个相对客观的态度,既不能过分使用,在项目中铺满boost,又不能对其畏之如虎,不敢使用。
我想实际游戏开发中,我们的团队伙伴大多应该是跟我一样程度的----对c++有一定的了解,又绝对成不上专家。所以,我们使用boost应该有下面这些原则或者说是注意事项:
1、不要认为boost非常庞大就一概否定,认为游戏客户端里面绝对不能或者完全没有必要加boost。 我们完全可以使用bcp裁剪我们需要的模块,虽然boost的牵连性还是很大的,裁剪一个智能指针有可能会裁剪出一大堆文件,但是至少不会把100mb+的代码都加到项目中。
2、我们常用的一些boost库已经加到tr1里面了,我们常用的开发环境又都是支持tr1的。vs2010、xcode、android ndk。所以如果我们只是用这些功能的话那么确实没有必要引入boost。
3、尽量避免需要编译的boost库的使用。只使用头文件形式的。如果一定要使用的话,那么可以选择把实现文件直接加到项目中,当做我们自己的代码来进行维护。这样ios和android环境维护起来要方便很多。 如果我们只在windows下进行开发,那么boost的auto_link机制也还方便。至少最近几个版本的boost编译起来已经相当方便了,方便到不需要教程的地步了。
4、尽量避免平台相关的库的使用。虽然像filesystem这样的库使用起来很方便,boost也帮助我们封装了平台依赖。但是还是尽量要避免这些库的使用。因为boost虽然支持ios和android,但并不意味着这些库在ios和android下都能正常工作。比如我之前就碰到过,filesystem的某个函数在ipad2上会崩溃,但是在iphone和ipad1上面又正常。还有boost::mutex在ios下怎么也锁不住,但是自己简单封装下p