结对编程-队友代码分析

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

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

原文地址:https://www.cnblogs.com/zxpbp/p/9715218.html

时间: 2024-08-30 10:21:03

结对编程-队友代码分析的相关文章

结对编程队友代码分析

这次结对编程的队友是可熊,感谢可熊不嫌弃我这个鶸,,和我组队 通过分析可熊的代码,深刻体会到了自己代码的不规范以及代码可延展性的缺失 比如using namespace std; ,这一行代码虽然自己写的时候很方便,但没有考虑到别人的编程习惯,某些工程代码里会出现以关键字做变量名的情况,这样写会不兼容 所以要用cin,cout作为标准输入输出应该如下面代码: int x; std::cin >> x ; std::cout << x << std::endl; 或者像这

软件工程导论 结对编程 队友代码分析

这次的个人项目是中小学数学卷子自动生成程序,每个人都自己动手编写了自己的代码.今天的任务是看队友的代码,并指出他代码中的优点和缺点. 以下是对队友代码的个人评价. 优点: ①代码结构组织有序. 代码非常的模块化,每一个函数的功能清晰明了,框架结构清晰.而我是一个main()函数写到底,这一点我应该以后注意. 他的框架 我的框架 ②交互友好 经过对程序的实际测试,发现交互是非常友好的,我每一步都知道我应该输入什么内容,他做的比项目原本需求的交互更好. 比需求更加人性化. ③程序严谨,测试未发现明显

结对编程——队友代码分析

队友使用的是c++语言,IDE用得是VS2015.下面开始进行优缺点的分析. 优点:①严格按照代码规范,分文件进行模块的分类.整个工程一共有8个文件,Login.h,Login.cpp,Subject.h,Subject.cpp,User.h,User.cpp,UsersTable.h,main.cpp,类的声明在几个头文件中,然后再在另一个文件中对类中的方法进行具体实现.比如login类: #pragma once #include"User.h" using namespace s

结对编程——队友代码的优缺点分析

一·项目的需求分析 需求文档中给出5个需求,第一个是用户的登录要求用户名和密码相匹配,并且有着初始的出题类型:需求二则限制题目的操作数和取值范围: 需求三要求我们输入题目数量,这里给出限定条件10-30个题目并且要求同一位老师的题目不能一样:需求四则要我们满足切换出题类型:需求五则 是对题目保存路径和文件的要求. 二·代码优缺点分析 main函数大体框架为:一个循环加一个if的判断语句来确定登陆对象,并且每一个登录对象都有一个唯一的标识,eg:张三1的标识为(0,1),再将其标 识传递给user

中小学数学卷子自动生成程序: 结对编程对方代码分析

需求分析: 1.命令行输入用户名和密码,两者之间用空格隔开(程序预设小学.初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学.初中和高中三个选项中的一个.否则提示“请输入正确的用户名.密码”,重新输入用户名.密码: 2.登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学.初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题.每道题目的操作

结对编程-队友代码欣赏

运行结果: 优点: 1.注释恰当,符合命名规范 2.添加了新增用户的功能 3.将不选用初中/高中的操作符视为正常情况而不是特殊情况,使代码的分支减少,逻辑清晰 缺点: 1.user.java下的三个类都存储了用户名与密码,而没有特别的区别与彼此的函数,显得有点多余,个人认为可以用一个类表示,减少代码量以及数据的传递次数 2.题目之间没有空行,没有检查题目是否重复 原文地址:https://www.cnblogs.com/marinmoring/p/9710751.html

结对编程队友个人项目分析

队友代码分析: 优点: 1:首先在函数中对账号进行了判断 具有良好的扩展性,也方便之后的功能里面增加新的账号,并且进行了注释 2.结构的逻辑性良好,根据不同的年级,通过if语句能够跳转到对应的模块进行输出 3.代码简洁明了,方便阅读以及理解代码的功能实现 4.变量命名规,具有良好可读性 5.在对输入判断这方面,提示的很好 缺点: 1.对账号密码判断位于一行,影响了代码的可读性 2.在生成出题文件这块,没有注释具体生成的文件的位置,影响后续的测试,并且在文件名字上,没有按照需求中所给的名字进行文件

结对编程:队友代码分析

按照结对编程要求,对队友的代码进行分析.在代码中发现的问题可以提醒队友或者警示自己. 优点: 一.代码以外: 1.使用语言为Python,比起JAVA和C++方便许多,而且实现许多功能也方便许多,可以说是从开始就为拓展打好了基础.事实上也的确因为这点,我们选用了他的代码作为核心 2.文件按功能分为几个文件,命名为CreatSymbol.CreatFirst.CreatSecond.CreatThird.Test.各个函数位置明确,命名规范 3.注释详细且明确.文件/函数的开头都有注释,各关键部分

中小学数学卷子自动生成程序-结对编程之队友代码分析

一.编程语言:C++ 二.代码解读与分析: 1. 项目逻辑 通过输入信息与数组中存储账户信息比对完成用户登录.根据不同的类型要求生成相应类型的试卷并查重.将生成题目以指定的形式存放在指定文件夹下.过程中可切换试卷类型. 2.函数功能说明 int main():主函数负责调用各个功能函数,将各个功能模块按照项目实际的使用情况与应用逻辑结合适当的提示性信息进行组织和套用. void SetPrimary(int n):生成小学类型的试卷. void SetMiddle(int n):生成初中类型的试