此博客是对我的结对编程队友索央同学的代码评价,此博客为个人想法和意见抒发,仅代表个人观点
索央同学是用python写的个人项目,和我所用的语言是差不多的,这次的编程任务最主要的一点除了生成题目以外就是对文件流的操作,包括读取用户信息、新建文件、查重、写入题目以及保存等等,然后我会从这几个地方进行分析:
这里索央同学读的是位于同一目录下的user_list.txt文件,这个文件是用于保存用户信息的,然后用三个列表储存了所有用户的用户 名、用户密码以及用户类型,并且考虑到了结尾的换行符的影响
这里为了能够每个老师都可以对其的题目进行查重,所以在每次当用户生成题目的时候先要判断有没有这个老师的文件夹存在,没有 就会新建文件夹并且索央同学新建了一个总的txt文件用于查重,在这里她把每一行都存在了一个总的列表中用于比对是否存在重复的情况。
这里可以看到,将生成的题目写入依照系统创建的时间建立的文件夹并且在总的题目文件中进行追加写入,以便之后能够继续进行查 重和比较
下面这里将对索央同学的函数各个模块和函数进行分析:
这里就是user类,主要的功能都是由类函数实现,其中有三个参数,分别是用户id,用户密码和用户类型
这里判断了信息输入格式是否正确,用了异常处理机制,并且在后面也有用到
这里用了一个简单的用户类型切换和跳转函数
这里索央同学分别用来生成小学的题成为了生成初中和高中题目的基础,用了比较多的随机数和判断语句来实现生成,所以生成题目 的部分是没什么问题的,并且加入了很多边界判断,比如某个符号前面不能出现其他固定的符号等等,都加入了边界判断,这里由于源码部分太长,我只截图了一部分
索央同学的代码规范比较好,缩进,空格,包括在文件前面的包头声明都是非常明确且清晰的,可读性高,并且类、类函数等都做了充分的注解,让我看着并不会很吃力,命名比较规范,能够清楚得知道每个变量和函数具体在起什么作用
代码的结构性好,为了达到比较好的封装性,这里用了一个大类将user封装起来,所有的函数和操纵都用一个类包装起来,这可以让实际在使用的时候非常方便,因为在主函数只要生成了一个对象,就可以直接调用函数运行了,我自己也是写了这样的一个结构
在做运算的时侯,很聪明地运用随机化函数达到了随机生成括号的位置,把每种情况都考虑到了,比较周到,而且在初中和高中生成题目的时候考虑边界情况比较齐全,在最后得到的结果中没有算式性的问题,总的来说,出的题目含义清晰,随机化强,可以满足老师出题的要求。
相比于图形化界面,命令行的显示就会显得比较繁杂,但这也是没有办法的,只能通过生成换行或分割线这样的形式让每个模块看起来清晰可辨。而且在生成题目由于是在文件夹中生成,这会导致你无法在命令行中看到生成的题目
虽然用了类来包装这个user类,但是user类中的生成题目模块整个函数就很繁重,并没有将生成文件和生成题目分离,导致代码冗长,而且在生成题目时,过多的分支和判断也是成为影响代码性能的重要因素所以我认为应该多做分层和抽象设计,让每个结构的代码更加清晰可辨认
索央同学写的代码总得来说是不错的,我自己也是用python写的,所以能够可以很快地读懂,我从她的代码中看到的亮点就是在随机数的运用上,我自己的随机数写的并不好,括号只能括住两个位置,而她的将所有情况都考虑到了,还有初中和高中的情况,总的来说,这次的互评还是非常启发我的,我觉得我也可以看看其他人的代码,再提升自己对这个个人项目的理解,并且能够多好地运用在结对项目上。创新课程设置的这种互相查看代码和之后的结对编程都是我以前没有接触的,我想,通过这个学期的学习,我会更加深入对软件工程的理解。