1. 程式人生 > >【數獨個人專案】ConsolePatameter類的編碼

【數獨個人專案】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類的編碼階段結束