folly学习笔记-序

1. 背景

folly是Facebook开源库 的缩写,包含一系列核心库,很多时候都是作为其内部C++项目的依赖库,也是各个项目需要将代码共享时放置的地方,它是对boost和标准库的补充,而不是竞争关系。只有当其他库不存在需要的功能或性能无法满足需要时,才会开始进行开发新的组件。当标准库或boost废弃一些功能时,folly也会努力的跟着适应变化。

性能问题散布在folly库的各个角落,是其关注的核心点,有时甚至导致一些非常特别的设计(例如,PackedSyncPtr.h,SmallLocks.h)

folly的github地址是https://github.com/facebook/folly,《modern c++ design》作者Andrei Alexandrescu是其主要作者之一。

2.设计

逻辑设计

folly尽可能将每个模块做到独立,但从不保证不会依赖内部的其他模块。

所有的符号都定义在folly命名空间内,当然除了宏意外,folly命名空间内部还会定义一些其他命名空间,如internal或detail, 当用户永远不应该使用这些内部符号。所有的宏都是大写并以FOLLY_开头。folly项目 下有个experimental目录,这些代码也在大量使用并可以通过测试,主要是考虑到未来API接口可能变化很大。

物理设计

folly和boost一样使用“口吃”的目录结构folly/folly,内部是扁平的结构,目前不会专门为一些模块设计特殊的目录,experimental目录下的内容最好不要使用,以免folly升级后原来代码不能使用,test目录包含所有模块的单元测试,一般以Test结尾,docs目录是一些文档,可以通过看文档或者folly主目录下的头文件查看有哪些模块。

note: 下一篇介绍其文档

你可能感兴趣的:(folly学习笔记-序)