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


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

                                                    

      优点主要有以下三点:

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

  • 相关阅读:
    深入理解Java并发之synchronized实现原理
    Untracked Files Prevent Checkout move or commit them before checkout
    java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
    Java 实例
    java队列——queue详细分析
    Jquery 获取table当前行内容
    Java list 分页(多种方式)
    获取当天的开始时间、结束时间等等的一个工具类
    java list按照元素对象的指定多个字段属性进行排序
    [译] OpenStack Kilo 版本中 Neutron 的新变化
  • 原文地址:https://www.cnblogs.com/blogxjc/p/9709161.html
Copyright © 2020-2023  润新知