结对编程对象代码分析

一、环境、工具

    Dev-C++,使用C++编写。

二、项目优点

1、界面与用户交互良好,要求实现的功能基本完成,操作简单不繁琐,程序运行的过程中有适当的提示性语句,在代码执行的过程中有适当的停顿(Sleep)和清屏(system(“cls”)),有较好的用户体验:

2、使用class类编写程序,封装性较好,所有的操作都在成员函数中进行,各个操作实现上互不影响,联系紧密,测试时可以快速定位到出错的位置。并且所有操作都在同一个类中,基本上不需要将参数传入传出到对象外,因此在修改的时候,考虑对其他对象的影响因素较小,可扩展性高,在接下来的开发中需要添加接口时,只需要添加函数调用即可。

3、对每个操作数使用了Symbol函数,该函数将小学、初中、高中等3种情况都包含了进去,因此在后面生成题目时,只需要改变传入的option就可以控制代码选择相应的操作数,避免了对小学、初中、高中分别写代码(可以进一步优化成多态)。

4、编码规范,变量和函数名都具有一定的描述性,程序健壮性和可读性较好,对用户的输入以及程序运行中涉及到的可能出错的相关IO操作进行了提醒,优化和维护,较为复杂的代码旁以及每个函数前都添加了注释。

5、所有出现过的题目都额外保存在题库里,这样就不需要反复打开路径下的不同试卷,只需要读取固定的路径即可,很有想法:

三、项目缺点

1.分离度不够高,实际上menu界面等和对象主体无关的且不需要传递参数的函数应该分离出来单独的一个类,同理,用来生成随机题目的函数也应该封装到另外一个类中,这样才更方便扩展。

2.题目生成功能并不完善,生成的题目最多只有一组括号,而且生成括号的代码相对来说有些冗长,变量也不易于理解。

3.代码中并没有创建文件夹的函数,在项目运行的时候如果没有事先创建好文件夹试卷将生成失败,可以考虑使用mkdir()函数来创建文件夹,使得程序进一步完善。

4.对部分IO操作处理得不够好,比如说当要求输入一个整数时,如果用户输入的不是一个数,而是字符型,程序将会崩溃;而当输入浮点数时本应该报错,却直接读取小数点前的数作为输入的值,这两点我觉得应该再考虑一下。

5.函数编写最好按顺序编写,这样会有逻辑和条理一些,不至于在分析代码时反复滑动。

6.在登录时直接把用户信息暴露在SignIn函数中,可以考虑用容器来保存,在SignIn函数中取出容器中的数据并检验。

四、反思和总结

  1. 个人的界面与用户交互有所不足,体验没有那么好,尤其体现在提示语太多,而没有一个clean选项清屏。
  2.  我和结对队友均没有考虑到用户信息暴露的问题,这一点会在结对编程时好好解决的。
  3. 最后希望在接下来的结对编程中我们能够各自查漏补缺,提高编程能力,攻克下结对编程这个难题!
posted @ 2020-09-30 20:30  subtle-  阅读(111)  评论(0)    收藏  举报