Skip to content
xiehuc edited this page Jul 13, 2014 · 1 revision

the design of preprocess

preprocess 目前设计有太多问题:

  1. 完全基于字符串的运算. 导致无法直接获取需要的field.
  2. 数据持有关系混乱. 在以前的设计中, 直接从 get_data 返回一个可修改的引用, 然后就在其它类中修改数据了. 导致自身的数据被破坏掉了.
  3. 命名不科学. 一些参数的命名完全不能表现代表的含义.

针对上面的一些问题, 重新设计的api, 同时为了保持和其它组件的兼容性:

  1. get_data 返回一个不可修改的引用. 如果是其它类中需要修改数据. 需要使用下面的 代码:

    str_hmap_list modify = preprocess.get_data();
    ... modify data ...
    

    因此就把数据的持有关系转让出去了. preprocess依然保持最初的数据.

  2. data_print 移出到Preprocess类的外面. 因为Preprocess的数据是不可修改的 , 放在类里面表示的语义只能是 "打印一个不会变化的数据" . 明显这是无意义的. 所 以把它移动到类外面来. 需要打印的数据直接从参数中取得即可.

  3. 另外, 把 data_print_pure 这种糟糕的命名给去除了, 使用多态来保持和以前的 兼容性. 在实现中, 完全重用了代码, 把其中简单的实现指向了复杂的实现.

Clone this wiki locally