在當前項目中,有很多GetData()方法,其中 在運行時從手寫數據庫中獲取不同類型的數據, 並將它們設置在類中的不同字段中。 項目然後有這樣的方法。如何優化/重構這樣的代碼?
void GetData(Datatype type, int& value);
void GetData(Datatype type, double& value);
void GetData(Datatype type, long& value);
void GetData(Datatype type, longlong& value);
....
有大量的數據類型的,因此,這些方法通常被稱爲 與許多分支的開關。
void GetData(Datatype type, int& value)
{
switch(type)
{
Type1:
value = GetDataFromDB1(TYPE1);
Type2:
value = .. //get from different source
...
}
}
void GetData(Datatype type, double& value)
....
正如所看到的,在所述的GetData()s的根據第二PARAM分類。 在每個GetData()中,都有很多分支。 這是一個合理的方法來獲取數據?
有太少的上下文甚至沒有受過教育的猜測,但它似乎這樣的模板需求的臭味。 – sbi 2010-08-24 08:55:25
'boost :: any'?或者'boost :: variant'? – jalf 2010-08-24 10:29:38