結對編程-隊友代碼分析
阿新 • • 發佈:2018-09-27
() 一起 的人 檢測 在一起 get 似的 登錄 div
按照老師的要求,對隊友的代碼進行解析,先說缺點在看優點,改正缺點學習優點,一起進步!
1.首先打開代碼的時候,關於賬號密碼的存儲,將賬號和密碼直接存儲在了一個數組中。按照“用戶名 密碼"的格式,這在之後的登陸檢測中確實可以方便檢測,但是個人感覺將賬號密碼直接存儲在一起會造成一些安全問題。
string allUser[]={"張三1 123","張三2 123","張三3 123","李四1 123","李四2 123","李四3 123","王五1 123","王五2 123","王五3 123"};
// 用戶賬號密碼信息
2.在用戶登錄的部分,默認了只擁有9個用戶,不考慮增加用戶的問題,用戶的類型選擇只是用了用戶編號除三的選擇方式,在增加用戶後可能會導致問題,拓展性不強。
string UserType[]={"小學","初中","高中"}; //用戶類型信息 while(getline(cin,Account)){ //用戶登錄處理 for(user=0;user<9;user++){ if(Account==allUser[user]){ cout<<"當前選擇為"<<UserType[user/3]<<"出題"<<endl; flag_Account=1; break; } else if(user==8){ cout<<"請輸入正確的用戶名、密碼"<<endl; } } if(flag_Account==1) break; } usertype=user/3; //0-2號用戶為小學,3-5號用戶為初中,6-8號用戶為高中
3.關於高耦合的問題,沒有將生成不同階段題目的代碼分離出main函數,只在main函數中使用了一個switch語句控制,導致main函數非常龐大,不利於修改和擴展。
4.在生成特殊符號的三個函數部分,觀察到了許多相似的代碼,或許可以專門分離出一個函數解決冗余問題。
關於函數的優點
1.在生成特殊符號的部分,使用了二維數組的方式來解決,將每個數字的座位二維數組的一行,用二維數組內的0,1值來判斷是否會出現特殊符號,與我的暴力判斷輸出不同,這樣的方式更加的精巧,雖然也會出現一些問題,但是能更加清晰的了解問題進行修改。
int Creat_list_bra(int oper_num,int list_bra[][2]){ //產生括號標誌數組,數組每一行代表一個操作數,第一個元素為1表示操作數左邊有左括號,第二個元素為1表示操作數右邊有有括號 while(1){ int sum_fbra=0,sum_bbra=0; for(int i=0;i<oper_num;i++){ if(i!=oper_num-1){ list_bra[i][0]=rand()%2; if(list_bra[i][0]==1){ list_bra[i][1]=0; sum_fbra++; } else if(list_bra[i][0]==0 && i!=0 && sum_fbra>sum_bbra){ list_bra[i][1]=rand()%2; if(list_bra[i][1]==1) sum_bbra++; } } else{ if(list_bra[0][0]!=1) { list_bra[i][1]=rand()%2; if(list_bra[i][1]==1) sum_bbra++; } } } if(sum_fbra==sum_bbra){ //當左右括號數量相等時結果合法 return 1; } } }
2.關於變量和函數的命名方式十分簡潔易懂,規範使用,不會對讀代碼的人造成誤解。
3.代碼內的縮進十分規範,在一些部分的分割也讓人看得非常舒服,代碼的註釋部分也解釋的十分到位,沒有多余的部分。
結對編程-隊友代碼分析