此次,讓我們以programmer的觀點來回顧程式:看程式碼。
身為programmer,你在乎的事情必然與程式有關。手邊的程式的寫法是否容易讓自己或其他programmer寫出錯誤的程式碼?程式是否容易閱讀、編輯?程式是否容易維護(新增功能、修改或拿掉既有功能)?程式是否容易測試,會不會很耗時間、且經常造成遺漏一些該測而未測的項目?
山頭很多,你得決定要攻哪一座。由於現在程式規模仍小,測試也不太難〈雖然測使用者輸入時將會費一番功夫,但我們尚未深入考慮SP2,此時尚無具體可回顧的測試項目〉。所以讓我們選擇找出容易導致自己或其他programmer犯錯的程式碼。
檢視程式,可發現向量及其維度分別以double []型態與 int型態的兩個值表達。例如,
void outputVector(double v[], int dim);
呼叫時,你必須自行關聯這兩個值,確保它們的正確性:
outputVector(u,dim_u);
如果u=[1,1]而dim_u = 3,那麼ouputVector將會應出錯誤的向量(例如[1,1,-347292697])。
同樣的問題也發生在
bool inputVector(double v[], int dim);
及它的呼叫:
cin >> dim_u;
u = new double[dim_u];
inputVector(u,dim_u);
事實上,上面程式片段的代表維度的變數 dim_u 的值可被任意(有意或無意)修改;一旦被修改,則向量及其維度一致性即遭到破壞。我們因此找到一個議題:向量及其維度應能確保一致。
讓我們進入下一輪。
© Y C Cheng, 2013. All rights reserved.
沒有留言:
張貼留言