一、 简介

本篇博客是对结对编程小组同伴欧阳生同学的个人项目代码分析并进行总结,品读他的代码之后,感觉自己收益颇多。

 

二、 对同伴的代码分析

(1)      整体分析:

欧阳生同学的代码主要分为以下几个部分:

Teacher类,xiao_xue类,chu_zhong类,gao_zhong类,shi_juan类

 

(2)      Teacher类:

将用户名和密码定义为私有变量,保证了安全性。在该类中定义了小学,初中,高中三种教师的初始化方法,每一类别的老师会创建一个含有三个元素的teacher数组。

 

(3)      xiao_xue类,chu_zhong类,gao_zhong类:

这三个类的设计比较相似,放在一起来进行分析。

首先是chu_juan方法,根据要求进行文件夹的创建,命名格式符合要求。

 

之后调用createQuestion方法出题并查重。

这里简单分析createQuestion方法的逻辑,在小学难度下,对前后括号进行了限定,保证不会只出现一个括号的情况,运算符和随机数随机生成,连接而成一道小学难度的题目。在初中难度下,用一个最小值为1的变量来保证有根号或平方出现,再利用括号的逻辑完成根号和平方位置的放置。在高中难度下,会随机生成三角函数,放置逻辑与前括号类似。查重则是会读取文件夹下所有文件,逐条进行比对,没有重复方可加入新试卷。

成功出卷后,会根据选择的难度调用不同其他类中的createQuestion函数,并生成新文件。

 

(4)      shi_juan类:

首先包含运算符生成的函数,根据随机数用switch语句进行生成,定义为static保证可以在其它类中调用。

接下来是主函数,创建了小学初中高中三个teacher类数组。使用永真循环,用来实现重新输入用户名和密码或者切换用户的功能。使用循环遍历所有已有用户判断输入用户名和密码是否正确。

 

 

 

三、 优缺点分析

1、 优点:

(1)代码有着较强的可读性,变量和函数的命名清晰易懂,便于阅读代码的人理解分析。

(2)生成题目的逻辑很清晰,对于不同情况符号的位置都有考虑,题目非常随机化且符合要求,有着一定的复杂程度。

(3)利用try-except模块避开了输入可能产生的bug

 

2、 缺点:

(1)      有些代码较为重复,可以考虑使用一段代码多次复用实现,缩短代码长度

(2)      对于数据的处理考虑还有些问题,比如该输入数字时倘若输入字符串的处理或者数字过大等的处理还需要再进行修改

(3)      有些部分可以在提高模块化,将不同功能代码分开

 

四、 总结体会

读完欧阳生同学的代码后,受益匪浅,对于自己编码的思路也清晰了很多,部分之前不太清晰的逻辑也得以梳理,学习到了一些小技巧。欧阳生同学对于用户体验方面也下了心思,有着很多小细节。在互相合作的过程中,我觉得自己各方面能力都有着显著提高,在合作中互相成长互相进步!

posted on 2021-09-28 18:22  雪瑜瑾  阅读(66)  评论(0编辑  收藏  举报