2014年6月25日星期三

重新写一个精简的核心库

最近的带的项目陷入了软件开发的危机,原因是陷入自家写的库造成的泥沼越来越深。

最近几年带的大的软件项目都是使用自家写的库,工具库utils,开发库commDev,核心库core,api库,可视化库viz等等。当然了使用自家的库开发软件有时候非常有效率,但是自家开发库的升级以及维护绝对是一个大问题,维护超过5万行程序本身就是一个大问题,而且这几年来因为项目压力,常常直接将很多东西放入核心库core里,导致核心库臃肿不堪,而且关于库的使用的实例程序以及接口或者api更本做不到时常更新,有很多文档已经四五年了,更本无法使用,所以导致最最大的痛苦是教新人使用我们的库。更为恐怖的是核心库对其他外部库的依赖越来越多,从OpenCV,Boost到现在的至少10个以上的第三方库,但是核心库更本也没有根据外部库进行更新,至今核心库还在使用OpenCV2.0。更为痛苦的是自家写的库还是使用VS2008进行编译,因为实在太大,以至于没有人有勇气进行修整,并使用最新的编译器进行编译。


现在实在受不了了,我终于决定重写核心库,并且放弃工具库utils,开发库commDev,api库,可视化库viz。新的核心库只有两个依赖OpenCV和Qt这两个第三方库的巨无霸。放弃的工具库utils,开发库commDev,api库,可视化库viz,全部使用Qt代替。新的核心库就叫CoreLite,只依赖于最新的Qt5.3和OpenCV2.49,保持绝对的精简,而且可以根据Qt和OpenCV的升级进行编译,而且使用VS2012进行开发和编译,希望能做到根据OpenCV更新的频率进入版本更新。

  • 新的库CoreLite的第一个tag就是CoreLite290,使用和OpenCV一样的文档结构。
    \build\include
    \build\x86 (\build\x86\vc11\bin, \build\x86\vc11\lib)
    \sources\modules\
  • 新的库使用Qt的QThread。
  • 控制Class的总数,只包括Qt或OpenCV无法提供的一些特性,例如Producer-Comsumer-Data Sink结构。
  • 带几个实例。
  • 保证库的可读性,使用Qt的api的写作标准。
  • 最大程度保证库的可维护性,其实就是要保持精简。

目前想到的就是这些了,以后在重新的过程中,如果还有什么想法,我希望能写下来记录一下,期望可以用一个星期将新的核心库改写完成。

没有评论: