结对编程项目之队友代码分析

  阅读了队友的代码,觉得他的代码有很多值得学习的地方,也有不少可以改进的地方,虽然和我的代码用的语言不同,但是思路大同小异。

                                                

  优点主要有以下三点:

  1.修改用户和命令较为方便:采用了字符串数组来存储账号密码和各种命令,如果需要修改,直接更改存储的元素即可。

1 const string Userchart[3][3]={"张三1 123","张三2 123","张三3 123",
2     "李四1 123","李四2 123", "李四3 123",
3     "王五1 123","王五2 123","王五3 123"}; 

  

  2.可以方便改进生成文件的路径:字符数组存储路径,,如果需要对之进行修改,可以直接对之进行修改。

  3.命名较标准比如对于括号的判断变量,用了judgebackets,让代码更加容易理解。就以其中的括号生成部分为例,一目了然。

 1 judgebackets=rand()%3;
 2             if (judgebackets==0)
 3             {
 4                 while (judgebackets==0&&((operatenumber-j)>backetsnumber))             //考虑同时有多个括号的情况 
 5                 {
 6                     judgebackets=rand()%3;
 7                     backetsnumber++;
 8                     ofile<<'(';
 9                 };
10                 ofile<<rand()%100+1<<g_Operatechar[rand()%4]; 
11             }

  

  可以改进的地方当然也有:

  

  1.去重:可能由于时间问题,去重函数只写了一个伪代码,并未具体实现。所以我就简单说一下我自己的思路。我采用了先搜索原文件夹,按顺序打开文件,之后按行读取。我之前先是生成了一个字符串,之后一行一行搜索查重,相同的话(尽管概率较小),就重新生成,不然就写入文本,这样就可以实现去重的要求。

  2.生成文件文件名时间较为麻烦,他是采用了一种繁琐的方法做的,虽然这样编辑较为方便,但是略显冗杂。

 1 void Creattime()                                              //获取当前系统时间,用g_timenow来表示 
 2 {
 3     SYSTEMTIME sys;                                           //利用windowsAPI获取系统时间 
 4     GetLocalTime(&sys);
 5     g_timenow[0]=sys.wYear/1000+'0';
 6     g_timenow[1]=(sys.wYear/100)%10+'0';
 7     g_timenow[2]=(sys.wYear/10)%10+'0';
 8     g_timenow[3]=sys.wYear%10+'0';
 9     g_timenow[4]='-';
10     g_timenow[5]=sys.wMonth/10+'0';
11     g_timenow[6]=sys.wMonth%10+'0';
12     g_timenow[7]='-';
13     g_timenow[8]=sys.wDay/10+'0';
14     g_timenow[9]=sys.wDay%10+'0';
15     g_timenow[10]='-';
16     g_timenow[11]=sys.wHour/10+'0';
17     g_timenow[12]=sys.wHour%10+'0';
18     g_timenow[13]='-';
19     g_timenow[14]=sys.wMinute/10+'0';
20     g_timenow[15]=sys.wMinute%10+'0';
21     g_timenow[16]='-';
22     g_timenow[17]=sys.wSecond/610+'0';
23     g_timenow[18]=sys.wSecond%10+'0';
24 }

  3.可能会生成双重括号,经常会出现在两个操作数外围同时出现两对括号,对于题目的简洁造成了影响。这里我觉得可以采用一种判断方式,如果两个前括号已经在一起,那么两个后括号就不能在一起,强制将后一个后括号向后移位,如果已经是最后一位就重新生成题目;或者如果检索到双重括号就直接重新生成。

原文地址:https://www.cnblogs.com/blogxjc/p/9709161.html