整体的排版:
针对同一代码段,写出优点和认为可能有的改进的地方。
代码段1:
将用户信息封装成Student类。Java的类型能够把相同属性的对象抽象出来,无论是概念上还是编程上都会帮助我们理解整个系统的架构。
虽然前面说到有将用户信息封装成类,方便管理。但是整个项目仅仅只有两个类,另外一个是主类,我觉得结构可以更加优化一些,因为Java是面向对象语言,类是很重要的一个概念,可以实现功能的解耦。比如这个项目的登陆模块和出题模块都可以设计成类,一方面可以对整个系统的架构有更清晰的认知,另一方面起码可以降低维护难度(修Bug的难度)。我这一方面的能力也很薄弱,有时候不知道功能要细化到什么程度可以收手,导致分了太多类,管理这些类花很多时间 。
代码段2:
用户登录部分做法是重写类内的equals函数,实现了两个对象的比对来实现登录查询。之前我没想过这种方法,我的做法是拿遍历用户名来查找匹配的用户对象,王同学是通过遍历对象来匹配对象。
代码段3:
试卷的查重,王同学采用的是提取当前文件夹下的所有文件内容,然后使用For循环查重。
这里我觉得可以采用更好得方法,我之前也是这样的查重手段,受身边室友启发,决定改用Set容器存放试卷,因为Set容器本身自带去重功能,所以只要在程序初始化时载入本地试卷,新生成的试卷只要忘Set容器一放,根据反馈信息就能知道这个试题是否和之前所有的试题(已装入容器)重复,如果不重复就加入。
代码段4:
生成试题的程序部分。这是我做的最不好的地方,所以我要多学习新的想法。
王同学的思路是随机生成括号,记录下左右括号的个数,这样可以保证括号闭回。
......中间略
王同学这样做的好处是可以较便捷准确的生成多个括号,而我只弄了一个括号。(●ˇ∀ˇ●)其实我的方法应该也能快捷生成多个括号(我将数字和符号分离成数组,根据数字的下标和括号跨距,进行插入括号),但是我以为会很容易出现这种情况 (4+5()9)+8 ,仔细想想只要检查一下就可以取除这个问题
代码段5:
为当前用户真正实例化了一个临时的Student对象,用它装载信息。这个想法不错,我的做法只是保持住用户输入的用户名密码,去访问登录和生成试卷。所以看了王同学的代码收获很大?
总结:
首先是看懂了,以前看别人代码很吃力(觉得像是在看不同语言),这次非常顺畅,当然主要原因是写的很好。然后一个发现是即使做同一个项目,代码的不同之处也特别多,能够看到对方的优点并加以学习是结对编程的第一个收获,希望在这之后能和项目组大佬们有更多友好交流。