`
yidongkaifa
  • 浏览: 4097057 次
文章分类
社区版块
存档分类
最新评论

boost在实际项目中的使用

 
阅读更多

对于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下怎么也锁不住,但是自己简单封装下pthread又可以正常工作。所以与平台紧密相关的操作还是自己维护的好,否则就是要替boost debug代码了。

5、不要认为boost什么都好,就在代码里面充斥着boost的代码。因为boost再工业化强度,也仅仅是“准”标准库。不是人人都会使用boost,也不是人人都愿意学习boost。代码中大量出现mpl什么的绝对不是一个聪明的选择。

6、boost相关的头文件,要么加入到预编译头里面。要么放到实现文件里面。千万不要放到会被大量引用,但是又没有预编译的头文件。因为boost里面大量充斥着模板,编译起来时间相当漫长。

7、我常用的一些boost库:

smart_ptr function bind 这三个不用多说了,已经加到tr1里面的,如果还不会的话,就跟c++程序员不会stl一样,直接面壁去。

algorithm/string 字符串算法库,这个相当好用并且很基础。如果不用这个话,那肯定还是要自己重复造轮子的。

format 这个见仁见智,如果不喜欢它的语法的话,那就自己封装个。这个比vsnprintf最大的好处就是安全性,不会因为参数传错而崩溃

pool 这个还没有真正使用,不过如果我有内存池的需要的话,绝对不会介意使用这个

regex 这个也是加到tr1里面的,不过ios下面貌似没有。不管怎么说,如果用到正则表达式,这个还是首选。虽然它有一大堆实现文件。

一些我个人绝对不会使用的库:

test 用起来很不方便,不如用cxxtest

preprocessor 游戏开发需要词法分析吗? 加上这个库会让你的工程编译时间变成一个世纪那么长

mpl 牛人可以使用它来封装自己的模板库,但是接口中一定不要暴露出相关的东西。因为这个东西可不是人人都懂的。

lambda 虽然tr1中也有lambda,但是还是不要为了省两行代码加入匿名函数了。 自己看着爽了,别人就都看不懂了。毕竟c++是c++,java是java

date_time 这么简单的东西,还是自己封装下好了。牵扯到夏时令还有时区的时候,还是自己写的更加放心

property_tree 可能我会封装一个类似的兼容xml和json和ini的配置读取方式,但是肯定不会是property_tree这样的形式,应该更加简洁一些,即便扩展性差些。

thread 前面说过了,自己封装下也不麻烦,不就是pthread吗?

分享到:
评论

相关推荐

    C++使用的boost库

    Boost库是C++编程语言中的一个开源库集合,它为标准库提供了许多扩展,增加了大量高效、高质量的工具和库,极大地丰富了C++的功能。...在实际项目中,熟练掌握Boost库的使用,无疑会提升开发者的技能水平和代码质量。

    boost图论算法使用说明书

    阅读这份文档,读者可以深入理解如何在实际项目中利用Boost库实现高效的图论算法,提升代码质量和解决问题的能力。 总的来说,熟悉和掌握Boost图论算法使用不仅能够提高编程效率,还能帮助开发者解决复杂的算法问题...

    boost下ssl的使用服务端

    在IT行业中,Boost库是一个广泛使用的C++库,它提供了许多功能强大的工具,包括...在实际项目中,根据需求可能还需要实现更复杂的逻辑,比如多线程处理、负载均衡、会话管理等,但基础的SSL服务端设置就是以上所述。

    标准C_C++_boost基础学习_boost开发

    综上所述,学习“标准C C++ STL boost基础 boost开发”不仅需要掌握C++语言的基础和STL的使用,还要深入了解Boost库的各个组件,以及如何在实际项目中应用和开发Boost库。通过阅读提供的学习资源,可以逐步提升C++...

    C++ Boost 库中文文档

    文档通常包含了详细的功能介绍、使用示例和API参考,使得开发者能够快速掌握Boost库的用法,并将其应用到实际项目中。 总之,C++ Boost库是一个强大的工具集,极大地丰富了C++的标准库功能,而中文文档的出现则为...

    BOOST学习资料整理收集

    3. **实践应用**:通过编写实际项目或练习来掌握Boost库的使用,实践是最好的老师。 4. **阅读源码**:对于更高级的学习,可以研究Boost库的源码,理解其设计思想和实现细节。 四、Boost库在实际开发中的应用: 1. ...

    boost1.49 include文件

    在 Boost 1.49 版本中,`include`文件夹下的内容将提供所有Boost库的头文件,开发者可以将它们直接包含到自己的C++项目中以利用Boost的功能。 例如,Boost.Asio库是用于网络编程的,提供了异步I/O操作,如套接字、...

    bjam.exe boost库编译使用的工具

    在你的 CodeBlock 项目中,需要配置这些库文件的路径,以便在编译你的项目时正确链接 Boost 库。 通过这些步骤,你可以在 CodeBlock 下成功编译和使用 Boost 库。不过需要注意的是,由于 Boost 库庞大且组件众多,...

    boost 安装包

    5. **配置环境变量**: 安装完成后,为了在项目中使用Boost,可能需要添加Boost的头文件和库文件路径到系统的环境变量。这样,编译器就能找到Boost的相关文件。 6. **测试安装**: 编写一个简单的C++程序,引入Boost...

    boost file system应用

    在项目中,你可能会有一个解决方案文件(`.sln`)和项目文件(`.vcproj`),这些文件通常与Visual Studio相关,它们用于组织和构建C++项目。`DataMerge`可能是项目的主要源代码文件,可能包含实现`boost::filesystem...

    boost完美组合(你不用再找其他的boost书籍了)

    《Boost完美组合》是一套...Boost库的强大在于其灵活性和广泛的应用场景,无论是在学术研究还是工业级项目中,都能发挥出巨大价值。因此,对于任何想要深入理解和使用C++的程序员来说,这是一份不可多得的学习资料。

    vc++6.0环境下的使用boost库实现正则表达式

    下面将详细讲解如何在VC++ 6.0环境中配置和使用Boost库来实现正则表达式功能。 首先,我们需要下载Boost库。你可以从官方网站http://www.boost.org/ 下载源码包。选择最新稳定的版本,例如`boost_1_74_0.zip`。下载...

    boost学习资料下载

    通过深入学习和使用Boost,开发者不仅可以提升编程技能,还能在项目中实现更高效、更可靠的解决方案。而`boost中文说明`则为中文使用者提供了方便的学习途径,有助于快速理解和应用这个强大的库。

    boost安装小程序

    在本文中,我们将详细讲解如何在Windows操作系统上安装最新版的Boost库,以便于在你的项目中充分利用它的功能。 **步骤1:下载Boost** 首先,你需要访问Boost的官方网站(www.boost.org)下载最新的源代码包。找到...

    boost.regex手册

    《boost.regex手册》是关于Boost库中正则表达式组件...通过研究这些测试源程序,开发者不仅可以掌握Boost.regex的使用方法,还能深入理解正则表达式的内部工作原理,从而在实际项目中更加游刃有余地运用这一强大工具。

    qt3,opencv,boost在windows平台上编译安装的技术资料

    在实际开发中,这些库可能会相互结合使用。例如,你可以在QT3应用中集成OpenCV来进行图像处理,同时利用Boost库提升程序的性能和可靠性。了解每个库的安装和配置方法是至关重要的,因为这将直接影响到项目的开发效率...

    boost filesystem version3

    Boost FileSystem Version 3,简称boost::filesystem v3,是Boost库的一个组成部分,它为开发者提供了在多种操作系统上进行...通过分析和调试这些文件,我们可以深入了解如何在实际项目中应用Boost FileSystem v3库。

    BOOST 最全资料合集.rar

    这个PDF文档可能是深入讲解BGL的教程,包括图的概念、图的表示、图算法(如遍历、搜索、最小生成树、最短路径等)以及如何在实际项目中应用这些工具。 5. **智能指针的标准之争 Boost_vs_Loki.pdf**: 智能指针是...

    基于boost库的tcp协议通信

    本资源是基于boost库的tcp协议通讯实例,目前已经在实际项目中使用

    编译好的boost库

    在标题"编译好的boost库"中,我们可以理解为这是一个已经预先编译完成的Boost库版本,用户可以直接在自己的项目中使用,而无需自行编译源代码。 在描述中提到:“将文件解压到某个目录下,然后将VS(Visual Studio...

Global site tag (gtag.js) - Google Analytics