舉個例子,我有一個類,我存儲關於二進制文件的一些信息:字符串池/實習 - 這是一個好習慣嗎?
class car {
char car_manufacturer;
//other stuff
};
凡car_manufacturer
的值是值之一:
enum car_manufacturers : char {
VOLVO = 0,
AUDI,
MERCEDES
};
現在這個例子應用中,用戶都希望他們的汽車製造商的字符串表示,而不是一個號碼,所以我創建一個枚舉,其中陣列的順序是一樣的枚舉的字符串表示的數組,所以car_manufacturer
可以用作數組索引
std::string car_manufacturers_strings[MERCEDES + 1] = {
"Volvo",
"Audi",
"Mercedes"
};
所以現在加載該文件,並創建一個car
對象出來的數據後,我可以簡單地通過car_manufacturers_strings[car.car_manufacturer];
該方案的優點得到了汽車的品牌,作爲一個字符串在於,在文件中,我不必存儲大量重複的字符串,如果汽車是相同的,因此我可以節省很多空間。但是這樣做的缺點是代碼稍微複雜一點。
那麼這是好還是不好的做法?
你可以在你的類中添加一個方法來做到這一點。然後,這些字符串以與製造商枚舉相同的順序存儲在數組中的事實是對用戶隱藏的實現細節。 – MicroVirus 2014-09-02 11:09:32
@MicroVirus這與我在應用程序中實現的完全一樣,汽車是一個類比。實際上,我確實實現了相同的'car.get_car_manufacturer_name();' – user3680400 2014-09-02 11:12:32