结对编程 搭档个人项目分析

看别人的代码,我觉得是一个痛苦又会有所收获的过程,很多和自己的逻辑不相符的算法思路都是皱着眉头硬看下去,但有的完全理解后,转念一想好像又确实没啥毛病,甚至还比自己的思路巧妙了那么一些,拓展了自己下一次在面对同样问题时的解决思路

队友和我自己一样,也是用了c++(虽然和java一样都半斤八两,但毕竟是大一就学的语言总有点亲切的味道?)

先说优点,首先是注释很清楚,清晰的注释无疑让我的阅读体验上升了不少,可以明了地看出算法的思路(缓缓放下了手中的刀.......)

int Primary(int number,string file_Name)  //生成小学试卷的函数 ,number为生成题目数量,file_Name为储存.txt文件目录 
{
    int num_Bracket=0;  //括号数目 
    int bra_left;  //左括号 
    int bra_right;  //右括号 
    int flag;
    int sum=0;
    srand(std::time(NULL));  //随机种子 
    ofstream file;   
    file.open(file_Name.data());  //打开需要储存的.txt文件 
    for(int i=0;i<number;i++)  //循环生成题目 
    {
        file<<i+1<<".";   //题目编号 
        int num=rand()%4+1;  //随机操作数 
        for(int j=0;j<=num;j++)
        {
            bra_left=rand()%3+1;   //随机数,判断是否生成左括号 
            flag=rand()%4;  //随机符号 
            if(bra_left!=1)  //不产生左括号 
            {
                if(num_Bracket!=0)  //前面的算式存在左括号 
                {
                    int bar_right=rand()%2+1;  //随机右括号 ,概率为1/2 
                    if(bar_right==1)  //生成右括号情况 
                    {
                        file<<rand()%100+1<<")"<<sym_Pri[flag];
                        num_Bracket--;  //括号数目减一 
                    }
                    else
                        file<<rand()%100+1<<sym_Pri[flag];  //不生成右括号 
                }
                else
                    file<<rand()%100+1<<sym_Pri[flag];  //没有左括号不生成右括号 
            }
            else if(j==0)
            {
                file<<rand()%100+1<<sym_Pri[flag];
            }
            else
            {
                file<<"("<<rand()%100+1<<sym_Pri[flag];  //生成左括号,括号数目加一 
                num_Bracket++;
            }
        }
        file<<rand()%100+1; //保证至少存在两个操作数 
        if(num_Bracket!=0)  //是否都有对应的右括号 
        {
            for(int i=0;i<num_Bracket;i++)
            {
                file<<")";  //不对应则吧右括号全部加在最后 
            }
        }
        num_Bracket=0;
        file<<"="<<endl;
        file<<endl;  //换行 
    }
    file.close();  //文件关闭 
}

其次是老师上课时提到的高内聚问题,本次项目需求的小学、初中、高中出题算法都作为单独的方法放到了主函数外,每个模块都做好了自己的事,main函数中的调用就显得简单明了

再就是变量命名,虽然有点单词不太恰当(hhh),但该大写的地方都大写了,再加上注释也不会让人对变量或者函数的作用产生什么异议

然后就说到不好的地方

问题首先也出在上面粘出的代码上,在生成小学题目的算法中,为了不让一个括号直接包住了整个算式这样的情况发生,队友用这样的语句

else if(j==0)
            {
                file<<tri<<rand()%100+1<<sym_Pri[flag];
            }

即第一个操作数前一定不会有左括号,强行阻止了这一情况的发生,但这样的话,就导致了如(1+2)*3这样的算式不会存在的缺陷

再然后的话,就是回车打少了代码看着有点拥挤,按照我自己的习惯的话,我是习惯在一个功能模块写完之后多打一行回车,以分隔一下代码,感觉就像写作文时分自然段一样?

最后的话,众所周知,结对编程要写ui了,然后!我们!都用的!c++!

也许这就是命吧

eclipse,打开

我继续改代码了

溜了溜了

猜你喜欢

转载自www.cnblogs.com/suru723/p/9715210.html