结对编程个人项目代码互评
结对编程个人项目代码互评
一、简介
本博客主要对于结对编程partner的个人项目的代码进行点评。partner的个人项目采用的python实现。在阅读了partner的个人项目的代码后。虽然代码能够正常实现个人项目编程的具体功能要求,但是在编码规范,代码格式,注释,代码清晰,可读性方面还有很大的提升空间。以下观点仅代表个人观点。
二、代码结构分析
队友采用python实现,所有功能均在一个python文件中完成,程序主要在一个while循环里面调用我们生成题目的功能,首先进行登录判断,如果登录成功,则在根据用户依靠提示的输入进行对生成不同类型的题目的调用。
while panduan:
denglu_counter = 0 # 记录登录人数(同一时间仅容纳一人)
list_input = input().split(" ") # 读取输入
if len(list_input) != 2: # 判断输入的合法性
print("请输入正确的用户名、密码")
else:
name_input = str(list_input[0]) # x读取用户名
passwd_input = str(list_input[1]) # y读取用户密码
# 遍历用户表,确认用户名与密码是否正确
for i in range(9):
if name_input == Users[i].zhid:
if Users[i].zhpasswd == passwd_input: # 用户名密码正确,准备进入系统
Nowuser.zhid = name_input
Nowuser.zhpasswd = passwd_input
Nowuser.zhqx = Users[i].zhqx
Nowuser.zhtybe = Users[i].zhtybe
print("当前选择为" + Nowuser.zhqx + "出题")
denglu_counter += 1 # 登录人数加一,进入系统
break
if denglu_counter == 0: # 登录失败,重新登陆
print("请输入正确的用户名、密码")
# 登陆成功,进入系统(具体功能)
else:
while 1:
if tuichudenglu == 1: # 判断是否退出并重新登录
tuichudenglu = 0
break # 退出并进入重新登录
print("准备生成" + Nowuser.zhqx + "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):")
# 进入操作功能(切换用户权限,生成题目,退出登录)
while 1:
get_command = input() # 获取命令,以确认功能
if get_command.isdigit():
# 命令为正整数且范围在[10,30]内,调用对应函数生成试卷,超出给予提示
if int(get_command) >= 10:
if int(get_command) <= 30:
print("生成试卷")
a = int(get_command)
if Nowuser.zhqx == "小学":
xiaoxue(a, Nowuser.zhid)
elif Nowuser.zhqx == "初中":
chuzhong(a, Nowuser.zhid)
elif Nowuser.zhqx == "高中":
gaozhong(a, Nowuser.zhid)
elif int(get_command) > 30:
print("超出范围")
elif int(get_command) < 10:
if int(get_command) != -1:
print("低于最小值")
# 退出登录
elif get_command == "-1":
print("请输入用户名与密码,并用空格隔开:")
tuichudenglu = 1
break
# 切换账号权限
elif get_command == "切换为小学":
Nowuser.zhqx = "小学"
break
elif get_command == "切换为初中":
Nowuser.zhqx = "初中"
break
elif get_command == "切换为高中":
Nowuser.zhqx = "高中"
break
else:
print("指令错误,请重新输入")
break
二、代码优缺点分析
2.1代码优点分析
a.方法和类注释描述
可以看到队友在对于项目所定义的函数都有较为详细的注释的描述,比如下面的生成初中题目的方法,队友按照python的编程规范对于所定义的方法的功能,参数以及返回值做了规范的描述,这是值得提倡的一个优点。

同时我们可以看到队友在所定义的zhanghu这个类中,对于这个类的作用以及各个属性所代表的含义,进行了注释说明。

b.方法的重用
由于个人项目需要根据用户的类型,生成对应的数学题目,这里类型一共有三种,所以队友编写了三个方法xiaoxue,chuzhong,gaozhong,来生成对应类型的题目,由于这三种类型的题目是层层递进的,所以队友在编写后面的方法时都是基于前一个方法的重用,并更具项目要求进行功能的扩展,这在我们的编程过程中是值得提倡的一个地方。下面给出三个方法中的部分代码



c. 缩进规范
作者对于各个代码块之间的缩进,以及各个方法之间的空行都有很好的规范
代码缺点分析
a.命名方面规范性有待加强




队友在对于类名Zhanghu,我们可以将其命名为User,以及对于生成小学,初中,高中题目的方法名我们可以采用英文的方式,而不是单纯的采用拼音。一个好的命名,应当从名字上可以看出它的具体含义和作用,所以作者在命名的规范性方面还有待提升。
b.代码块冗余
可以看到作者在xiaoxue,chuzhong,gaozhong,三个方法中都用到了文件写操作,但是对于文件的写入,作者是对当前的用户名进行逐一的判断,进而生成对应的文件夹,并未很好的用到作者定义到了类Zhanghu,其实我们这里可以利用字符串拼接的方法将当前用户的用户名和文件路径拼接起来,以及将文件写入对应的文件夹构建成一个方法,这样就避免了对于当前用户的逐一判断,即可减少代码量,又提高了代码的可读性。



三、总结
通过此次个人项目的编程,尽管我和队友采用的是不同语言进行的项目的编程,但是我们在这个过程中学习到了两种语言的规范,这对于采用相同语言进行编程的队伍所收获到的东西是不同的。通过这次互评,我们学习到了对方的优点,从而使用到自己的项目上面来,在编码过程中要更注重代码的可读性,以及封装等等诸多方面的内容。我们还需要不断的学习,以培养出编写高质量代码的专业素养。道阻且长,然行则将至。

浙公网安备 33010602011771号