结对编程之伙伴代码阅读
代码是用C++完成的,工程内共包含五个文件,一个.cpp文件,4个.h文件
各头文件主要功能:
AccountIdentify.h为账户密码的匹配确认
GradeChange.h为是否切换年级的判断
StrTranslation.h为字符串与数字之间的相互转化
TestProduct.h为产生题目
看到这几个头文件的功能,就非常有条理感,这当然要狠狠吹一波我的队友啊
cpp文件主要是用来处理用户的登录名与密码
1 #include"TestProduct.h" 2 int main() 3 { 4 //登陆前身份验证 5 string account, password,grade,changeGrade; 6 int numberOfTest = 0; 7 cin >> account >> password; 8 while(!PasswordIsRight(account,password,&grade)) 9 { 10 cout << "请输入正确的用户名,密码" << endl; 11 cin >> account >> password; 12 } 13 cout << "当前选择为" << grade << "出题" << endl; 14 15 //登陆后检测是否需要更换年级 16 cin.sync();//清空缓冲区 17 cout << "准备生成" << grade << "数学题目,请输入生成题目的数量:" << endl; 18 cin >> changeGrade; 19 GradeChange(changeGrade, &numberOfTest,&grade); 20 21 //打印制定数量与等级的题目 22 string pathOfTextPaper;//当前出的制定数量的题目路径 23 string PathOfAllTest;//之前出过的所有题目路径,用来检测重复 24 PathProduct(account,&PathOfAllTest,&pathOfTextPaper); 25 int level=0; 26 if(!grade.compare("小学")) 27 { 28 level = level_Primary; 29 } 30 else if(!grade.compare("初中")) 31 { 32 level = level_Junior; 33 } 34 else if(!grade.compare("高中")) 35 { 36 level = level_Senior; 37 } 38 TestProduct(account, pathOfTextPaper, PathOfAllTest, numberOfTest, level); 39 return 0; 40 }
这里的处理要比我自己写的程序条理清晰很多
因为自己经常用java写程序,所以我自已其实对于C++文件操作不是特别熟看了队友的这部分代码也是受益良多,学到了不少
1 void PathProduct(string account,string* pathOfAllTest,string* pathOfTestPaper) 2 //文件路径生成 3 { 4 time_t currentTime; 5 time(¤tTime); 6 struct tm *p; 7 p = localtime(¤tTime); 8 (*pathOfTestPaper).assign("./"); 9 (*pathOfTestPaper).append(account); 10 if(access((*pathOfTestPaper).c_str(), 0) == -1)//检测文件夹是否存在 11 { 12 mkdir((*pathOfTestPaper).c_str());//创建文件夹 13 } 14 (*pathOfTestPaper).append("/"); 15 (*pathOfAllTest).assign((*pathOfTestPaper)); 16 (*pathOfAllTest).append("AllTest.txt"); 17 (*pathOfTestPaper).append(NumToStr(p->tm_year+1900));//与现实时间差1900 18 (*pathOfTestPaper).append("-"); 19 (*pathOfTestPaper).append(NumToStr(p->tm_mon+1));//从0开始计数 20 (*pathOfTestPaper).append("-"); 21 (*pathOfTestPaper).append(NumToStr(p->tm_mday)); 22 (*pathOfTestPaper).append("-"); 23 (*pathOfTestPaper).append(NumToStr(p->tm_hour)); 24 (*pathOfTestPaper).append("-"); 25 (*pathOfTestPaper).append(NumToStr(p->tm_min)); 26 (*pathOfTestPaper).append("-"); 27 (*pathOfTestPaper).append(NumToStr(p->tm_sec)); 28 (*pathOfTestPaper).append(".txt"); 29 }
总体上说队友的实现还是要比我的好一点的
条理清晰,代码可读性较高,其添加括号,以及判断重复的问题比我自己的实现要好一些
缺点也是有一些的,比如说题目生成部分的代码过于冗长,特殊情况较多,读的头疼,代码这里我就不贴上来了,贴上来会占很大的篇幅
其实看别人的代码挺头疼的,编写风格不一样,有些函数含有多个判断语句理解起来就很困难,看的头大。
其实自己觉得自己代码写的挺好的,但是实际上也是让别人读的头大,这次阅读队友代码,还是收获挺多的,但是是真的不想在读别人的代码了

浙公网安备 33010602011771号