结对编程队友代码分析
Posted zhujunjin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程队友代码分析相关的知识,希望对你有一定的参考价值。
代码由C++完成, 主体函数是通过对年级判断然后调用相应函数进行出题
对于运算的实现是通过结构体实现的, 具体如下:
struct yunsuan //小学运算的结构体 { string left1; //内层左括号 string right1; //内层右括号 string left2; //外层左括号 string right2; //外层右括号 int num; //运算数 string signal; //运算符 }; struct yunsuan2 //初中运算的结构体 { string left1; //内层左括号 string right1; //内层右括号 string left2; //外层左括号 string right2; //外层右括号 int num; //运算数 string signal; //运算符 string sqr; //平方 string root; //开方 }; struct yunsuan3 //高中运算的结构体 { string left1; //内层左括号 string right1; //内层右括号 string left2; //外层左括号 string right2; //外层右括号 int num; //运算数 string signal; //运算符 string sqr; //平方 string root; //开方 string san; //三角函数符号 };
并且对于每个相应的小功能都具有独立的函数, 并且函数都符合SRP
代码的优点:
1.格式规范, 能一眼理出各个模块与大致思路, 有很清楚地注释, 方便阅读与理解, 并且将所有功能全部实现
2. 即上面提出的, 每个模块只为一个功能负责, 每个模块都实现一个小功能, 并且每个模块都很精简, 例如:
int insure1(test2 &t2,int &chuti) //确保平方或开方至少出现1次 chuti操作数 { int check=0; //检验生成的算式是否合格,若不合格则在output中重新生成 for(int j=0;j<chuti-1;j++) { if(t2.yun2[j].sqr=="^2" || t2.yun2[j].signal=="√") { check=1; break; } } return check; }
3. 在代码实现上, 特别在括号的实现上, 他采取了随机选取内外括号的方式, 而我是采用在每个操作数之间进行随机是否添加括号然后排除几种特殊情况, 我的这种方式会有遗漏并且容易产生问题
缺点:
1. 代码中用户登录进行的是对用户名进行if判断, 对于增添用户等一些之后的扩展有点麻烦
2. 代码有些冗余, 对各个年级都有一个结构体, 并且每个年级都有一个初始化函数, 主函数中也存在三个类似的生成试卷的模块, 可将相同处提炼出来精简代码
但是总体来说我队友还是特别厉害特别优秀特别棒的 就这样 Over
以上是关于结对编程队友代码分析的主要内容,如果未能解决你的问题,请参考以下文章