结对编程-队友代码分析

 按照老师的要求,对队友的代码进行解析,先说缺点在看优点,改正缺点学习优点,一起进步!  

1.首先打开代码的时候,关于账号密码的存储,将账号和密码直接存储在了一个数组中。按照“用户名 密码"的格式,这在之后的登陆检测中确实可以方便检测,但是个人感觉将账号密码直接存储在一起会造成一些安全问题。

string allUser[]={"张三1 123","张三2 123","张三3 123","李四1 123","李四2 123","李四3 123","王五1 123","王五2 123","王五3 123"};
// 用户账号密码信息

2.在用户登录的部分,默认了只拥有9个用户,不考虑增加用户的问题,用户的类型选择只是用了用户编号除三的选择方式,在增加用户后可能会导致问题,拓展性不强。

string UserType[]={"小学","初中","高中"}; //用户类型信息

    while(getline(cin,Account)){ //用户登录处理 
        for(user=0;user<9;user++){
            if(Account==allUser[user]){
                cout<<"当前选择为"<<UserType[user/3]<<"出题"<<endl;
                flag_Account=1;
                break;
            }
            else if(user==8){
                cout<<"请输入正确的用户名、密码"<<endl;
            }
        }
        if(flag_Account==1)
        break;
    }
    usertype=user/3; //0-2号用户为小学,3-5号用户为初中,6-8号用户为高中

3.关于高耦合的问题,没有将生成不同阶段题目的代码分离出main函数,只在main函数中使用了一个switch语句控制,导致main函数非常庞大,不利于修改和扩展。

4.在生成特殊符号的三个函数部分,观察到了许多相似的代码,或许可以专门分离出一个函数解决冗余问题。

关于函数的优点

1.在生成特殊符号的部分,使用了二维数组的方式来解决,将每个数字的座位二维数组的一行,用二维数组内的0,1值来判断是否会出现特殊符号,与我的暴力判断输出不同,这样的方式更加的精巧,虽然也会出现一些问题,但是能更加清晰的了解问题进行修改。

int Creat_list_bra(int oper_num,int list_bra[][2]){ //产生括号标志数组,数组每一行代表一个操作数,第一个元素为1表示操作数左边有左括号,第二个元素为1表示操作数右边有有括号 
    while(1){
        int sum_fbra=0,sum_bbra=0;
        for(int i=0;i<oper_num;i++){
            if(i!=oper_num-1){
                list_bra[i][0]=rand()%2;
                if(list_bra[i][0]==1){
                    list_bra[i][1]=0;
                    sum_fbra++;
                }
                else if(list_bra[i][0]==0 && i!=0 && sum_fbra>sum_bbra){
                    list_bra[i][1]=rand()%2;
                    if(list_bra[i][1]==1)
                    sum_bbra++;
                }
            }
            else{
                if(list_bra[0][0]!=1)
                {
                    list_bra[i][1]=rand()%2;
                    if(list_bra[i][1]==1)
                    sum_bbra++;
                }
            }
        }
        if(sum_fbra==sum_bbra){  //当左右括号数量相等时结果合法 
            return 1;
        } 
    }
}

 

2.关于变量和函数的命名方式十分简洁易懂,规范使用,不会对读代码的人造成误解。

3.代码内的缩进十分规范,在一些部分的分割也让人看得非常舒服,代码的注释部分也解释的十分到位,没有多余的部分。

posted @ 2018-09-27 19:55  张鑫平  阅读(163)  评论(1编辑  收藏  举报