Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174308
  • 博文数量: 43
  • 博客积分: 827
  • 博客等级: 准尉
  • 技术积分: 487
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-26 19:19
文章分类

全部博文(43)

文章存档

2015年(1)

2014年(1)

2013年(5)

2012年(36)

我的朋友

分类: C/C++

2012-08-02 11:44:21

使用XML作为配置时,每次添加配置都要做这样的工作:
1:添加XML对应的数据结构或者Configer类,抽象一些数据获取接口
2:添加XML配置的加载读取代码
做多了,就感觉有些繁琐,因为基本上都是结构差不多的代码,翻来覆去的写。
另外如果这个添加的配置总是在一个XML文件里面,那意味着这个文件对应的Configer会膨胀成很大的类,类大了,也不是啥好事。

出于代码的繁琐,就考虑使用Lua来做配置,总结了下使用Lua的好处
1:使用Lua来配置,配置解析的工作将不需要显示添加代码
2:因为Lua自身原因,一个Lua配置本身就可以具有Object的性质(使用Table),因此完全可以避开添加Configer类和中间结构的这一层,数据获取接口可以使用Lua函数来做(包括需要一些数据解析逻辑)。
3:对于XML中,同一种Element,但是因为一些情况原因,属性会因为情况不同而有所增减,这种情况会导致数据结构不恒定(或者说仅仅为了支持某一些少数的情况而要让其他并不需要这些属性的付出不必要的内存代价)。Lua的Table则不存在这种问题。
4:最后脚本,绝对不仅仅只是静态的配置数据。

下面是大致的一个结构,代码就不贴了(在内网里面...)
有些情况不太适合使用Lua来做配置:
1:层次结构性很强,很复杂。Lua直接操作这种情况比较繁琐,但是还是可以通过lua函数来一定程度缓解这种情况。

2:实时性强的读取操作。毕竟Lua是脚本,最好还是读到内存里面来供实时性读取。但是要注意的是:Lua里面的数组操作是很快的,基本上是几个函数调用。(以前看过Lua里面的代码,Hash表部分设计还是强的,应该还是很快,但Lua函数调用部分的消耗感觉比较大)


2013/03/01

基于这里基础,我重新写了一个功能更全的库BIN_Luabind,它不但完全支持Lua作为配置的功能,更多的提供基于全脚本开发模式的中间间(本身是为了对游戏开发提供全脚本开发框架的而写的这个库)









阅读(3215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~