因为工作需要从2011年11月开始从事QT界面开发。对界面开发还不是很习惯,觉得重用率低布局等方面做起来即麻烦又不容易得到肯定。
那段时间也迷恋上脚本语言,希望在应用开发中使用目前学的Lua脚本。由于工作紧凑一直没时间把脚本糅合到应用中,另一方面的原因是:对需求了解有限很难把脚本自然的运用进去,如果生搬硬套会影响到应用的“美学”,简单才是美!
那部分工作到春节前整体基本完工了,需要保留一些对未来的扩展。这些扩展主要来自文件的解析。简单的介绍就是程序把认识的数据读取出来,根据某种规则显示,用户可以通过界面修改数据,最后要保存数据。但是不认识的数据不能丢弃,必须要保留。春节期间对这部分工作又仔细的思考了一次,终于下决心使用Lua脚本了。
文件的解析委托给脚本,这里应用简单不需要封装和Lua交互的类,使用全局table把文件读入,按照K-V划分出更多小的table,在C++中使用Lua提供的CAPI遍历table,获取字符串后交给以前的文件解析函数。这样加入了一层脚本,复用了以前稳定的代码,从table中获取的字段不认识时,文件解析函数不理会,保存文件时遍历table写文件数据也不会丢失。
在内存数据保存到文件时,以前的程序直接使用fprintf写文件,目前要委托给脚本,为了简便的处理这个问题,决定使用中间文件,使用以前程序把内存的数据写到中间文件,再读出中间文件的内容到table中,由于使用全局的table。这样数据更新就能进行,而程序不认识的部分也不会受到影响。这样整个过程就解决了。
总结:引入了脚本之后会带来更多的消耗,不过对于读写操作只会进行很少的几次,整体影响不会很大。分析脚本带来的灵活性,读写文件更容易不需要分类型了。在处理不认识的数据上面更灵活,使用C++在一堆认识的数据中保存部分不认识的数据,在写文件时还要把这些数据还原更容易产生问题。(特别是某些数据修改后会影响文件的长度)