结对编程项目之队友代码分析
阅读了队友的代码,觉得他的代码有很多值得学习的地方,也有不少可以改进的地方,虽然和我的代码用的语言不同,但是思路大同小异。
优点:
修改用户和命令较为方便:采用了字符串数组来存储账号密码和各种命令,如果需要修改,直接更改存储的元素即可。
1
2
3
4
const string Userchart[3][3]={"张三1 123","张三2 123","张三3 123",
"李四1 123","李四2 123", "李四3 123",
"王五1 123","王五2 123","王五3 123"};可以方便改进生成文件的路径:字符数组存储路径,,如果需要对之进行修改,可以直接对之进行修改。
- 命名较标准比如对于括号的判断变量,用了judgebackets,让代码更加容易理解。就以其中的括号生成部分为例,一目了然。
1
2
3
4
5
6
7
8
9
10
11
12judgebackets=rand()%3;
if (judgebackets==0)
{
//考虑同时有多个括号的情况
while (judgebackets==0&&((operatenumber-j)>backetsnumber))
{
judgebackets=rand()%3;
backetsnumber++;
ofile<<'(';
};
ofile<<rand()%100+1<<g_Operatechar[rand()%4];
}
缺点
去重:可能由于时间问题,去重函数只写了一个伪代码,并未具体实现。所以我就简单说一下我自己的思路。我采用了先搜索原文件夹,按顺序打开文件,之后按行读取。我之前先是生成了一个字符串,之后一行一行搜索查重,相同的话(尽管概率较小),就重新生成,不然就写入文本,这样就可以实现去重的要求。
生成文件文件名时间较为麻烦,他是采用了一种繁琐的方法做的,虽然这样编辑较为方便,但是略显冗杂。
1 |
|
- 可能会生成双重括号,经常会出现在两个操作数外围同时出现两对括号,对于题目的简洁造成了影响。这里我觉得可以采用一种判断方式,如果两个前括号已经在一起,那么两个后括号就不能在一起,强制将后一个后括号向后移位,如果已经是最后一位就重新生成题目;或者如果检索到双重括号就直接重新生成。