1. **中突出的問題是缺少通用性,好些的**都是為了簡單的實現自己既定的功能,完成一項作業而設計。不能抽象成乙個介面或者簡單的功能函式供別人使用或者自己使用,簡而言之,就是規範性還不夠,需要多加注意。
2. **風格方面的問題。語句之間加入適當的空格,當前大部分的**是縮成一團,清晰度不夠高。比較詳細的提了幾個例子。比如,下面的例子:
if (pnode->isleaf!=0)
}
**過於緊湊了,應該在語句之間加上適當的空格
if( pnode->isleaf != 0 )
}
還有為了是**在不同的ide中開啟顯示不會混亂,需要將tab鍵改為空格。平時在寫**的時候不用tab,改為空格來替代。
3. 在標頭檔案和標頭檔案的宣告函式中不用cout來輸出錯誤資訊。應該做的是丟擲異常。只有在測試檔案中可以使用cout來顯示出現的問題。
5. 測試用例的規範。個人感覺對於測試這一塊,可以先奔著乙個不是太嚴格的標準來普及一下規範性,因為畢竟如果按照嚴格標準的測試用例的規範來要求,需要太多的時間。
6. using namespace *;的使用,除非自己特別確定命名空間裡面的東西不會和自己寫的程式不會衝突,一般情況下不要直接using了,可以改為std::cout,std::endl等。
7. 標頭檔案要寫的盡量的精簡。
8. 一般標頭檔案中,需要對自己宣告的變數和函式做出宣告。而在函式定義時一些重複的注釋沒有必要再寫。還有一定要養成用英文寫注釋的習慣。還有要培養自己用英文解決問題的能力,比如,檢索問題之類的可以用英文。
9. using的一些其他功能方面的介紹。不多做贅述,可以自己再網上再看看。
10. 形參之間是用逗號來分割的,在逗號的後面需要加上空格。
void func1(int x, int y, int z); // 良好的風格
void func1 (int x,int y,int z); // 不良的風格
11. for(;;)迴圈括號中的三條語句,如果比較長的話,可以寫成三行,從而使**更加的美觀易讀。
12. 跟在語句後的注釋,盡量做到對齊,做到規範。
13. 與a[i++] = 3應該用哪種寫法?按照具體環境的語義來判斷,如果陣列存在迴圈形式的後移之類的情況,可以考慮用後一種寫法,在編譯器的層面上,兩者相當。
14. 安全的析構函式,防止兩次呼叫析構,對同一塊記憶體一次new,兩次delete。
class linklist
;linklist::~linklist()
15. 大括號的**分塊功能。在徐老師的**裡面有單純的用大括號括起來的**塊,規範的寫的話,這些**塊應該定義成為函式在外面,然後裡面內部呼叫。用大括號括起來的**塊在效率上更優一些。小光也提出了跟內聯函式的功能類似。不知道這種寫法是不是推薦?
第一講 遞迴
遞迴 recursion 程式呼叫自身的程式設計技巧。遞迴滿足2個條件 1 有反覆執行的過程 呼叫自身 2 有跳出反覆執行過程的條件 遞迴出口 一 階乘 include using namespace std int recursive int i int main main 三 斐波那契數 inc...
矩陣第一講
特殊矩陣1.零矩陣 所有矩陣的所有元素全都為0 2.對角矩陣 乙個n階方陣除對角線上的所有元素都為0 2.數量矩陣 對角矩陣中對角線上元素為常數,3.單位矩陣 數量矩陣中對角線上上常數為1.4.行階梯矩陣 乙個矩陣的每個非零行 元素不全為零 的非零首元 第乙個非零元素 所在列的下標隨著行標的增大,並...
第一講 遞迴
遞迴 recursion 程式呼叫自身的程式設計技巧。遞迴滿足2個條件 1 有重複執行的過程 呼叫自身 2 有跳出重複執行過程的條件 遞迴出口 一 階乘 include using namespace std int recursive int i int main main 三 斐波那契數 inc...