结对编程代码审核

队友选择使用C++来编写个人项目,先说缺点在看优点,改正缺点学习优点,一起进步!  

1、对于用户,队友选择使用结构体,这个选择是正确的,但是没必要小学、初中、高中分别使用结构体,这个都是用户,用一个结构体即可。对于用户的验证,应该分离成一个模块,这样便于日后的扩展,比如,当用户量多,需要存在数据库或者文件中时,只需改用户验证模块即可。

struct Primary
{//小学用户结构体 
    public:
        string name;//小学用户名 
        string password;//小学用户密码 
        Primary(string na,string pas)
        {//构造函数 
            name = na;
            password = pas;
        }
}; 
struct Junior
{//初中用户结构体 
    public:
        string name;//初中用户名 
        string password;//初中用户密码 
        Junior(string na,string pas)
        {//构造函数 
            name = na;
            password = pas;
        }
};
struct Senior
{//高中用户结构体 
    public:
        string name;//高中用户名 
        string password;//高中用户密码 
        Senior(string na,string pas)
        {//构造函数 
            name = na;
            password = pas;
        }
};

2. 题目生成算法过于繁琐,可以看到题目生成的方法中,一些变量名的规范还是有待提高,自己看了好久没看懂这个逻辑,同时,还有很多重复的语句,建议将函数在分解成不同的功能单元,不同的单元复用,可减少代码重复。

void PQue(int num)
{//生成小学题目 
    int temp1,temp2,temp3,temp4,temp5;//五个操作数 
    int j = 0;
    srand((unsigned)time(0));
     char fuhao[4] = {'+','-','x','/'};//加减乘除 
    for (j = 0;j < num;j++)
    {
        cout<<j + 1<<"."; 
        outfile<<j + 1<<"."; 
        onum = MIN + rand() % (MAX1-MIN) + 1;//如果四则运算里面只有一个操作数 ,将没有意义,故操作数定义为 (1,5]
        switch(onum)
        {
            case 2:
                temp1 = MIN + rand() % (MAX2-MIN+1);//随机生成第一个操作数 
                temp2 = MIN + rand() % (MAX2-MIN+1);//随机生成第二个操作数 
                cout<<temp1<<fuhao[rand() % 4]<<temp2<<endl<<endl;//随机生成含有两个操作数的算式 
                outfile<<temp1<<fuhao[rand() % 4]<<temp2<<endl<<endl;
                break;
            case 3:
                temp1 = MIN + rand() % (MAX2-MIN+1);//随机生成第一个操作数 
                temp2 = MIN + rand() % (MAX2-MIN+1);//随机生成第二个操作数 
                temp3 = MIN + rand() % (MAX2-MIN+1);//随机生成第三个操作数 
                cout<<temp1<<fuhao[rand() % 4]<<temp2<<fuhao[rand() % 4]<<temp3<<endl<<endl;//随机生成含有三个操作数的算式 
                outfile<<temp1<<fuhao[rand() % 4]<<temp2<<fuhao[rand() % 4]<<temp3<<endl<<endl;
                break;
            case 4:
                temp1 = MIN + rand() % (MAX2-MIN+1);//随机生成第一个操作数 
                temp2 = MIN + rand() % (MAX2-MIN+1);//随机生成第二个操作数 
                temp3 = MIN + rand() % (MAX2-MIN+1);//随机生成第三个操作数 
                temp4 = MIN + rand() % (MAX2-MIN+1);//随机生成第四个操作数 
                cout<<temp1<<fuhao[rand() % 4]<<temp2<<fuhao[rand() % 4]<<temp3<<fuhao[rand() % 4]<<temp4<<endl<<endl;//随机生成含有四个操作数的算式 
                outfile<<temp1<<fuhao[rand() % 4]<<temp2<<fuhao[rand() % 4]<<temp3<<fuhao[rand() % 4]<<temp4<<endl<<endl;
                break;
            case 5:
                temp1 = MIN + rand() % (MAX2-MIN+1);//随机生成第一个操作数 
                temp2 = MIN + rand() % (MAX2-MIN+1);//随机生成第二个操作数 
                temp3 = MIN + rand() % (MAX2-MIN+1);//随机生成第三个操作数 
                temp4 = MIN + rand() % (MAX2-MIN+1);//随机生成第四个操作数 
                temp5 = MIN + rand() % (MAX2-MIN+1);//随机生成第五个操作数 
                cout<<temp1<<fuhao[rand() % 4]<<temp2<<fuhao[rand() % 4]<<temp3<<fuhao[rand() % 4]<<temp4<<fuhao[rand() % 4]<<temp5<<endl<<endl;//随机生成含有五个操作数的算式 
                outfile<<temp1<<fuhao[rand() % 4]<<temp2<<fuhao[rand() % 4]<<temp3<<fuhao[rand() % 4]<<temp4<<fuhao[rand() % 4]<<temp5<<endl<<endl;
                break;
        }
    }
} 

3. 项目设计

对于不同的模块的功能还是用不同的方法来完成,但是个人觉得还是可以在进行分解,现在的每个函数的作用还不够单一,扩展性不强。对于这个项目,还是可以当成一个小工程来对待,也就是前期要进行设计,简单设计下整个系统的架构,将不同的功能模块想清楚,然后进行不同的实现。同时,建议使用面向对象的方法来构建整个项目,扩展性会更强。

猜你喜欢

转载自www.cnblogs.com/wd-z/p/9716017.html