结对编程-对冯同学的代码分析
一.个人项目需求
1. 登录验证,根据账号判断试卷类型。
2.登录后输入数字以生成试卷。在登录状态下输入“切换为小学、初中、高中”切换试卷类型,输入-1退出。
3.同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复,各个类型的试卷题目中出现的数学符号不同。
4.生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。
二.代码分析:
首先从需求实现上来看:
冯同学的程序在满足基本需求基础上,并且每个需求都实现得较好。
当然,唯一的一点小缺陷可以从图1中找到,那就是在题目的括号只有一个,并不是特别符合题目的需求。
图1 题目文档
其次是交互的友好性:
在这方面上,冯同学使用分隔符创建的简单页面,以及适度的提示语都便于人的使用,这是值得称赞的。
图2 登陆界面
当然,在具体测试过程中,有个美中不足的地方。
那就是在切换题目难度时,并没有明确地指出输入的格式为“切换为”+”小学/中学/高中“。容易让人误以为只要输入后面的”小学/中学/高中”。
图3 切换题目
最后的代码的整体设计上:
冯同学做得十分好。
1. 首先是单元测试,用户,出题的分离,在这一方面我做的远不如冯同学。
图4 从上到下依次为 出题,测试,用户
2. 然后是登陆界面的设计,巧妙地利用了login() (一级界面,登陆界面),menu()(二级界面)直接的相互调用解决了稍有复杂的登陆功能。
至于用户的判断则是利用文件读入的模式,这个比写入代码中更加便于修改。
图5 三个函数login(),menu(),change() 确定登陆,选题页面
3.接下来则是出题,冯同学将出小学,中学,高中三类题分成三个函数,大大地减少程序间的耦合度。同时配上简洁的注释,不仅便于后期功能的修改,也利于其他人的阅读。
图6 小学题目部分代码
总的来说,冯同学的代码中有许多值得我借鉴的地方。