-
Notifications
You must be signed in to change notification settings - Fork 4
preprocess
xiehuc edited this page Jul 13, 2014
·
1 revision
preprocess 目前设计有太多问题:
- 完全基于字符串的运算. 导致无法直接获取需要的field.
- 数据持有关系混乱. 在以前的设计中, 直接从
get_data
返回一个可修改的引用, 然后就在其它类中修改数据了. 导致自身的数据被破坏掉了. - 命名不科学. 一些参数的命名完全不能表现代表的含义.
针对上面的一些问题, 重新设计的api, 同时为了保持和其它组件的兼容性:
-
get_data 返回一个不可修改的引用. 如果是其它类中需要修改数据. 需要使用下面的 代码:
str_hmap_list modify = preprocess.get_data(); ... modify data ...
因此就把数据的持有关系转让出去了. preprocess依然保持最初的数据.
-
将
data_print
移出到Preprocess类的外面. 因为Preprocess的数据是不可修改的 , 放在类里面表示的语义只能是 "打印一个不会变化的数据" . 明显这是无意义的. 所 以把它移动到类外面来. 需要打印的数据直接从参数中取得即可. -
另外, 把
data_print_pure
这种糟糕的命名给去除了, 使用多态来保持和以前的 兼容性. 在实现中, 完全重用了代码, 把其中简单的实现指向了复杂的实现.