结对编程对程延博的项目代码分析
一.需求实现分析
用户名密码存储,输入,和比较
优:
需求正确并完整地实现了
用户密码存放于txt文件里,可以自行编写txt中的账号密码,使用十分方便,只需在txt中修改,程序就能正确读取账户密码并与用户的输入进行比对,并且在用户正确后获取出默认账户类型
不足:
没有密码修改功能,不能通过程序修改txt
输入题目数量,根据账号类型出题
优:
功能实现了,能根据输入的生成题目数量和卷子类型进行合适题目生成,并能进行数目的10-30区间判断,同时在不满足条件时向用户发出错误提示。能够在数目-1的时候退出程序
不足:
生成数学题目后什么提示都没有就直接跳回了主菜单,用户使用体验感有待提升
试卷生成
优:
能够实现按照试卷类型生成相应数目的题目并保存在txt中,并且文件以以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行
生成的题目也满足难度要求
不足:
这也是很多同学的普遍不足,我的个人项目也有这种问题
生成的小学题目可以添加括号来改变运算顺序,从而使得题目更加多样化。
三角函数以及开方的操作未考虑到被操作数是否能很好地被操作,比如一个非平方数开方后的结果误差就很大。
其余功能
切换卷子类型选项也很好的实现了,在退出程序时也有提示
能够实现对题目的重复性进行判断
能够将合格的题目写入试题文件
二. 代码分析
优点
1注释较为详细,有利于代码的阅读和理解
2对于程序运行中可能会出现的一些异常或者是错误进行了处理,能够起到提醒用户的作用
也便于开发者的维护
3各种语句的书写格式十分规范,便于理解和维护
4代码的逻辑结构十分清晰,便于理解和维护
5代码的注释清楚,便于理解和维护
6代码的内聚程度高,耦合程度低,代码块与代码块间的相互影响小
待改进
- 变量的命名有待改进,有些数组的名称取的十分随意,不利于代码的阅读和理解,建议是最好取和数组作用相关的名字,比如一些存放运算符号的数组用np,dp这种名字就很难让人理解意图
- 代码的模块性有待提升,个人认为有些地方的重复代码(比如说小学初中和高中的试题生成部分有一些重叠)可以采用函数,这样能节省代码,减少冗余,同时,也有利于代码的维护和理解
- 试题生成函数作为一个单一函数,他的代码量有些过多,个人认为最好是将其切分成一些小的函数,这样代码的结构会更加清晰
就是下面这个函数。感觉有点太长了,可以去一下重,改成几个函数
- 同一代码块的不同逻辑块之间可以用空格隔开,便于代码的阅读和理解
- 有些函数的参数永远不会被修改,可以将它修改为const
三. 运行体验分析
1有的地方给出了用户足够的提示,但有的地方的提示还欠缺一些,比如试题生成之后最好给用户一个提醒。
2只是通过命令行输入,不如UI界面形象,当然这个在结对编程中会做,在这里只是提一下
3总体来讲,用户的使用体验是不错的,只要跟着提示一步一步进行就好
四. 思维碰撞之我的感受
1因为我的用户名和密码是通过类的实例来实现的,我觉得不如cyb这种存储在txt中的方便,因为txt文件很小,便于我们通过其他一些工具快速修改,这样能够在每次程序运行时直接读取账号密码,而不是每一次都要去创建类的实例
2通过他的代码也让我了解了一些以前并不怎么清楚的类和API接口,增加了知识储备
3总而言之对通过别人代码的阅读自己也收获了不少
本人:杨瑞 搭档:程延博