github項目地址
夥伴做業連接
--------------------------------------------------html
結對編碼過程:我與結對編碼的同伴,首先是各自分別閱讀項目條件,以後開始討論各自對於此次做業的理解。隨後咱們把本身要作的工做細緻的分工,最重要的一點是缺點二人代碼的鏈接方式,以便儘量少的對代碼進行沒必要要的修改,最後把寫好的代碼互相交換來審閱達到找出錯誤的目的。最後緊行代碼的彙總調試,獲得想要的結果。
- ——————————————————————————————— - |預估(分鐘)\實際分鐘| - 計劃:10\15 - 預估項目耗時:190 \ 275 - 開發: 30 \ 90 - 需求分析:12 \ 15 - 生成設計文檔:18 \ 20 - 設計複審:5 \ 5 - 代碼規範:5 \ 5 - 具體設計:5 \ 15 - 具體編碼:30 \ 35 - 代碼複審:10 \ 15 - 測試:20 \ 20 - 報告:10 \ 10 - 測試報告:10 \ 10 - 計算工做量:5 \ 5 - 過後總結:20 \ 20 - 合計:190 \ 275 - ———————————————————————————————
咱們將做業分紅兩個部分,即文件操做以及字符的識別與計數。我負責的是對文件的操做以及指出同伴編碼的錯誤。對於字符的計數,爲了節約內存打算使用動態的內存申請,經過遍歷鏈表來判斷是不是新字符以及增長次數,同時用結構體來進一步的簡化代碼。首先是關於c++的空間申請,由於從未學習因此在博客園上尋找相關的知識內容;對於文件操做,經過打開文件,使用文件類的getline函數,將文件裏面的字符儲存到數組裏面,而後開始進行操做。由於事先還未學習,便在上面畫了大量時間學習,找到一個合適的函數或方法可以很好的錄入文件內容。
爲了使得字符與字符數量緊密結合與代碼簡化,咱們決定使用結構體來經行工做,同時創建一個類來捆綁相關函數的使用同時確保數據的安全性,其私有成員是字符總數與一個指向結構體的指針(其做用爲頭指針)。函數分爲指針初始化函數,字符計數函數,與鏈表打印函數。字符計數函數形參爲字符數組,完成與文件操做的交接。
- 對於命名除了無關變量以外其他所有使用英文命名,若是存在多個英文則使用' _ '字符隔開,其他空格與縮進徹底遵循vs2019自動隔開。 - 代碼互審:在完成一個模塊後互相審覈與測試,其中代碼錯誤有鏈表頭指針爲空,文件地址不正確,數組的數據溢出。
int fun(char b[]) { int a; set(); for (a = 0; b[a] != '\0'; a++) { char_counter(b[a]); } return 0; }
- 代碼改進:最開始是打算把識別與計算分開後來發現這麼一來會遍歷兩次鏈表,形成效率下降,後來使用if語句來實現是否爲新字符,以此來進行操做。
- 對字符及其操做封裝爲一個類來,包含鏈表建立,字符計數與識別和打印。保護數據與實現代碼簡潔。
class way_to_char { public: int set() { use = new struct zifu; use->next = NULL; if (use == NULL) { cout << "分配內存失敗" << endl; } cout << use << endl; return 0; } int char_counter(char b) { if (use == NULL) { return 0; } struct zifu* p; for (p = use->next; p != NULL; p = p->next) { if (p->word == b) { p->number++; char_number++; return 0; } } p = new struct zifu; p->word = b; p->number = 1; p->next = use->next; use->next = p; char_number++; return 0; } int show() { if (use == NULL) return 0; struct zifu* p; char stead; cout << "總的字符數爲" << char_number << endl; for (p = use->next; p != NULL; p = p->next) { if (p->word >= 65 && p->word <= 90) stead = p->word + 32; else stead = p->word; cout << "字符爲" << stead << "出現次數爲" << p->number << endl; } return 0; } int fun(char b[]) { int a; set(); for (a = 0; b[a] != '\0'; a++) { char_counter(b[a]); } return 0; } private: struct zifu* use; int char_number = 0; };
結對編程最開始的難題不是項目,而是兩人的配合問題,針對同一個任務意見上總會產生分歧,致使遲遲沒進展。但隨着時間推移,兩人步調漸漸一致,能互相理解對方代碼的意圖並進行審覈,提高了代碼質量。一旦編碼有紕漏另外一方總能指出,效率相比一人提高了很多。