结对编程_队友代码分析

项目需求:完成一个能够根据用户身份和用户请求自动生成小学,初中,高中试卷的程序,具体要求就不细说了。

队友代码的赏析:首先我得说说他的优点,不然你看缺点可能会很累(开个玩笑啦),程序的基本功能可以实现,能够对不同用户的不同需求通过随机数生成相应试卷,同时也能够创建txt文件在个人相对应的文件夹目录下,对于稳健操作的相关代码有一定的了解,实现通过循环输入判断输入是否合法,生成的三个等级的试卷有难度区分度并满足出题的基本要求。

不足:

1.从生成的题目来看,首先漏了两个要求,一个是比较难处理的括号问题,该程序并不能生成括号,但是从代码中可以看到,作者是想过添加括号的,而且思路是通过随机数随机产生小于等于操作数数量的括号,但是并没有实现加入到具体的算式中,再就是没有子题目前加上题号,对于括号的问题深究的话可以难到无法想象,首先左括号需要打在

2.题目的相异性问题没有代码实现,是对于同一用户生成的算式并没有判断是否有相同的题目,也就是一个文件加下的所有txt文件不能有相同的行。

3.代码冗长高内聚,在判断和输入用户信息并输出提示的循环中,然后就是不同用户的不同需求中,这两个地方是主要原因。

解决建议:
1.对于第一个不足,首先是括号问题,对于括号的问题深究的话可以难到无法想象,首先第一层次是左括号需要打在操作数的前面,右括号要打在操作数的右边;第二层是通过随机数实现对产生括号数量多少的限制,第三层是需要考虑到左括号是可以在同一个操作数的左边重复出现的,而右括号是不能在同一位置的,这样会造成括号没有意义,另外就是算式最两边同时出现括号出现没有意义,第四层就是对于初中和高中的题目里面可能需要考虑到在包含sin等的算式中的括号内部还有括号,我自己的代码也只能到第三层实现一半,所以也不太好细说,另外就是序号问题,其实单纯打上序号并不难,在生成的题目前面加个递增变量写入就行,只是在后面的相异性问题上面要注意省去前面的序号再进行判断。

2.题目向异性思路为,首先可以使用字符串数组将一个文件下的算式用字符串保留每生成一个就与之前该文件下已生成的题目判断一下,然后就是对于文件夹下所有已生成的文件进行遍历,每个文件逐行遍历比对,所有的都判断完确认没有相同的题目就可以添加进当前文件下,具体的代码不会的可以上网搜寻。

3.对于代码还是有很多地方可以精简的,总结就是,情况较多时,能用case别用if,相同代码需要反复复制粘贴时想到用一个函数,在作者代码中,九个用户三种试卷,就考虑和9x3=27种情况,每种都是差不多的代码而且比较长,为什么不用一个函数呢,一个函数写3种生成试卷的情况,一个函数写9个用户的生成文件的路径情况,通过对外部变量赋值调用两次函数就行。

前言:我想说说自己对于本次个人项目的一些感悟,本项目看似不是太难,但是真正做起来却发现怎样都无法让他变得完美,而且当代码写的越多到后面很简单的改动都不想去改了,原因是代码过长找到对应地方修改还要排查害怕出现其他的问题,所以从一开始还是得仔细思考需求,思考解决方式,实在超出自己的能力范围再另作处理,不要一开始就一个功能一个功能的写入和添加,这样也行,但是要分代码块来写,每个功能对应一个函数,然后测试好函数之后再加到总的模块中,但是总还是会有考虑不到的地方的。。。唉,毕竟刚刚接触项目,经验不够,路还很长,不过坚持吧。

原文地址:https://www.cnblogs.com/huimiang/p/9716150.html

时间: 2024-10-07 02:11:04

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

结对编程:队友代码分析

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

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

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

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

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

结对编程之队友代码分析

优点: Java GUI界面: 界面简约,操作简单,实用性强   2 .独特的解题思想(上代码) //生成对应年级的题目     public String getSubject(int type) { Random rand = new Random(); int Num,NumOpe; if(type == 0)   NumOpe = 4; //小学运算符下标取前4个 else if(type == 1)  NumOpe = 12;    //初中运算符取前12个 else NumOpe =

结对编程评价队友代码

队友使用C++实现该个人项目,十分地面向过程 1.首先是用户初始化 优点:使用map方便检索 缺点:增加用户比较麻烦 2.main函数实现 登陆.生成题目.切换题目难度功能 其中使用while循环来实现各功能界面间切换的功能,第一层while循环是登陆,登陆成功进入第二层循环生成题目,若输入“切换为XX”,但XX不为小学初中高中的任意一个,会进入第三层循环要求输入以上任一难度. 优点:层次分明,层层递进 缺点:如果界面数量变多,继续使用该方法会使得代码臃肿,可读性变差 3.使用流水线方式生成一道

结对编程队友代码分析

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

结对编程初体验——代码复审

这一次和室友结对编程,第一项任务就是互看代码.想到上一次这样认真看她的C++代码,是一年前学程序设计这门课时,帮她人工debug.虽然都是从头到尾认真读代码.通逻辑,感觉却是不同的,之前的关注点是bug在哪,而现在却是带着任务的,要关注代码核查表中的项目.结果看着看着,总感觉自己在找茬dbq 回归正题↓ 编译环境:Dev-C++ 5.9.2 程序语言:C++ (一)优点: 能发现的优点,大多都是自己的缺点 1.代码可读性强. 通过详细的注释,即便是我们两个的个人项目使用的不是同一种语言,我看懂她

结对编程_附加题_博客2

1.界面模块,测试模块和核心模块的松耦合 2.改进程序 结对编程_附加题_博客2

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

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