不是經驗豐富的C++程序員,我儘量保持程序可讀性。 可能的話,我將函數和類放在Main.cpp之外的其他cpp和頭文件中。關於代碼可讀性
我開始做同樣與所有的#define指令用於聲明標籤和基本參數。它們位於DEF_PARAM.h頭文件中,可以工作。
我想爲地圖做同樣的事情,但這會導致我的問題。
std::map <std::string,int> Mnemo_list; //Mapping of Mnemonics to number of parameters.
Mnemo_list["P"]=4;
Mnemo_list["PX"]=1;
Mnemo_list["PY"]=1;
Mnemo_list["PZ"]=1;
Mnemo_list["SO"]=1;
Mnemo_list["S"]=4;
Mnemo_list["SX"]=2;
Mnemo_list["SY"]=2;
Mnemo_list["SZ"]=2;
Mnemo_list["CpX"]=3;
Mnemo_list["CpY"]=3;
Mnemo_list["CpZ"]=3;
Mnemo_list["CX"]=1;
Mnemo_list["CY"]=1;
Mnemo_list["CZ"]=1;
因爲我有時用字符串從文本文件閱讀,我經常需要只用枚舉工作的開關控制,於是我開始跟在後面的開關使用整數的映射字符串。因爲地圖可能很長,所以我更喜歡它們將頭文件或頭文件放在頭文件或cpp文件中。
我試圖首先把完整塊(映射定義和分配)在頭文件,或僅在首部中的地圖DEF,其餘以CPP文件。其結果是從編譯如下奇怪的錯誤:
"error: expected constructor, destructor, or type conversion before '=' token"
我認爲沒有人喜歡通過這樣一個在main.cpp中的開始了一系列的長列表進行瀏覽。一旦infor處於代碼中,您再也不想看到它,因此我會將這一系列代碼放入Main.cpp之外的頭文件或/和代碼文件中。
這種方法可以讓我想和全局變量的工作是什麼不是這樣的印象。我只是想避免這個問題,就像論壇之前向我提出的那樣。
這是很好的做法,還是有保持源代碼可讀的其他方式?
由於提前,
斯特凡
幾十億人。它們中的許多是相互排斥的或不適用於給定的項目。幾乎所有的其他都是主觀的。 – delnan
你能提供一些例子嗎?多餘的宏使用往往會使代碼無法讀取。此外,這個問題可能更適合[codereview.se]。 – hammar
在編輯之後,我會推薦C++ 0x,即使在全局範圍內,您也可以使用正確的值初始化映射。 –