为一个系统写plugin的感想

来源:互联网 发布:淘宝f2c是什么意思啊 编辑:程序博客网 时间:2024/05/09 00:51

我总是怀疑系统的架构设计是否有点复杂了?

例如我写的plugin的基类有28个函数,还有一个public的内嵌类,为了实现一个输出图像到某种格式的影音文件的功能,我实际上可能只要实现两个虚函数,但是我需要把所有基类的所有接口函数看一遍。

而且并没有什么完整的测试例子可以说明基类的接口到底有什么逻辑关系(我是测试驱动开发的信徒)。

例如,为了从获得输出文件名这个参数,我得写这样得代码:

 double refTime = -1;
  _meta.getMetaDataT("refTime", refTime);
  std::cout<<"refTime="<<refTime<<std::endl;
  std::vector<DataItem> inItems;
  int ref = -1;  // index of "model" item in inItems vector

  // process prefetch early -> this should go up to source node before doing anything useful
  evalInputItems(refTime, inItems, ref, TrackRef::DATA);
  const TextItem name(inItems[1]);
  
  std::cout<<"in userSetup(), file name=:"<<name.getText()<<std::endl;

注意:_meta是基类得protected成员变量,evalInputItems是基类得成员函数。

从这个项目的一开始,我就觉得这个系统的设计者是不是把一些简单的事情复杂化了?

一个标志就是从注释和文档中发觉设计者很重视“设计模式”,说句老实话,我认为“设计模式”不是个好词。在程序设计的过程中,我认为应该尽量避免使用设计模式,除非万不得已。以我的经验来说,结构化设计很多时候就足够了。

另一个标志就是虽然系统很复杂,但是目前最终用户还没有开始使用系统。

无论如何,我做好自己的工作就行了,其他听天由命吧。