结对编程之伙伴代码阅读

代码是用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(&currentTime);
 6     struct tm *p;
 7     p = localtime(&currentTime);
 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 }

 

总体上说队友的实现还是要比我的好一点的

条理清晰,代码可读性较高,其添加括号,以及判断重复的问题比我自己的实现要好一些

缺点也是有一些的,比如说题目生成部分的代码过于冗长,特殊情况较多,读的头疼,代码这里我就不贴上来了,贴上来会占很大的篇幅

 

其实看别人的代码挺头疼的,编写风格不一样,有些函数含有多个判断语句理解起来就很困难,看的头大。

其实自己觉得自己代码写的挺好的,但是实际上也是让别人读的头大,这次阅读队友代码,还是收获挺多的,但是是真的不想在读别人的代码了

 

posted @ 2018-09-27 13:54  男爵坑外迅捷蟹  阅读(118)  评论(0)    收藏  举报