【數獨個人專案】ConsolePatameter類的編碼
github地址:https://github.com/Duuang/Project-Sudoku
日期:2018-12-16
程式碼規範
編碼之前,程式碼規範:Google C++ 程式碼規範(有個pdf檔案,一搜就有),儘量按照裡面的程式碼規範來
4. 實現階段
(ConsolePatameter類的函式流程圖:)
ExtractCommand()函式流程圖
ExtractOperationCode()函式流程圖
ConsolePatameter類的編碼
因為最初的設計不太合理,也沒有考慮到編碼上的細節,所以在編碼過程中,根據遇到的幾個問題,我又修改了類的具體定義。
1. 編碼過程中遇到了幾個問題:
1. 沒有預設建構函式,導致別的類如果包含這個物件,還要寫初始化列表。。(即使加個空的預設建構函式,那如果是用預設建構函式新建的物件,也沒有函式能初始化成員變數)
2. 因為存在錯誤輸入的問題,使用者獲取命令引數時,沒法方便的判斷到底是不是合法的引數。
3. string operationcode無法同時方便的表示-c或-s後面的引數
4. public中的函式只是作為介面函式即可,不應該把不會被使用者呼叫的函式放在public
解決方法
1. 去掉了帶引數的建構函式,只使用預設建構函式,然後加了個void Init(int argc, char *argv[])函式來做相關初始化
2. 加了一個bool islegal成員變數,初始化為false,當引數合法時才被改為true,方便獲取引數時來判斷引數是不是合法
3. 把-c/-s後面的引數分為了int operationcode_c和string operationcode_s,分別儲存,在獲取的時候也分別獲取(因為知道了command引數,所以也知道了應該獲取_c還是_s)
4. public中的函式改為重新定義的介面函式
void Init(int argc, char *argv[]); char GetCommand(); int GetOperationcode_c(); string GetOperationcode_s();
private中的函式改為被其他函式呼叫的函式
int ExtractCommand();
int ExtractOperationCode();
2. 類的設計上的修改為:
3. 程式碼分析(使用pdf中的Code Quality Analysis程式碼質量分析工具)
執行程式碼分析之後提示
原始碼為 char s_tmp[1005];
沒有初始化,改為了 char s_tmp[1005] = ""; 之後,消除了所有warning
至此ConsoleParameter類的編碼階段結束