Java教程

湖南大学结对编程——分析结对编程队友的个人项目

本文主要是介绍湖南大学结对编程——分析结对编程队友的个人项目,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

湖南大学结对编程——分析结对编程队友的个人项目

分析对象:郭家乐同学的个人项目

分析人:凌志豪

 

目录

一、需求问题分析

二、简述郭家乐同学的解决方案

三、项目结构及代码分析

四、程序测试

五、总结

 

一、需求问题分析

此次个人项目的需求是,写一个程序,能够实现以下功能:

  ①用户登录

  ②切换用户出题年级

  ③根据用户身份自动出题

其中,功能③是最为核心的功能。要实现上述功能,面对的几个核心问题是:

  1. 如何存储用户数据和题目数据?

  2. 题目的生成方式?

  3. 用户身份的切换方法?

  4. 如何做到随机出题不重复?

 

二、简述郭家乐同学的解决方案

  2.1 针对问题1,选择了用txt文本文档存储题库以及用户信息:

 

 

 

  这样做的好处是:对题库数据的增删改查操作可以很简单,便于管理题库和用户;

  坏处是:用户数据安全性不足,较高的文件流读写频率高会造成性能损失。

 

  2.2 针对问题2,采用的是预先自拟题目的做法,相比于编程序随机出题的做法,好处是能够自定义题目的难易,但出题需要耗费部分人力。

 

  2.3 针对问题3、4的解决方案,在第三部分代码分析讲解。

 

三、项目结构及代码分析

  3.1 先看src目录结构:

  郭同学很好的将java文件打包装好,方便开发。

  但在这里存在一个规范问题,那就是类名的命名问题

  java中对于类的命名,一般都以大写字母开头,采用驼峰命名的规范。

  在项目结构提出的建议是:

    ①将代码分类放入package,比如关于Page视图层的装在一个package里,关于数据操作层的放在一个package里。

    ②可以将文件资源放在单独的resource包里,便于管理。

 

  3.2 代码分析:

    3.2.1 main.java文件

      可以看到,郭同学有个很棒的优点,那就是基本每一个模块、关键代码都有注释解释

     这能够大大降低阅读难度,方便读者理解代码。

 

    3.2.2 funcPage.java 文件

     这是一个功能类,郭同学将一些方法模块化,逻辑清晰

     而且对方法的调用可以体现出面向对象的编程思想

 

 

 

 

 

    3.2.3 loginPage.java 文件

     来看一份用到文件流的代码:

 

 

     优点:依旧是保持了写注释的良好习惯,强调注释的重要性,为后续开发人员的考虑,而且属性和局部变量都做到了初始化。

     缺点:全部采用行尾注释的方法也会使得代码稍显繁杂,可以稍作精简。以下是一个很棒的回答:

 

 

     根据情况改变变量的命名格式可以使得变量意思一目了然,减少不必要的注释量,比如上图获取的id、password用inId、inPassword替代。

 

    3.2.3 paperMaker.java 文件

     优点分析

      郭同学很机智地利用三重循环,严谨的筛选已用过的题目,契合出题需求。

      且在有文件流读写的地方做到了异常处理,增强了程序的稳定性。

      代码以及变量的命名均很规范。

 

 

 

 

四、程序测试

  运行 main.java 文件启动程序:

  用户交互界面简洁明了,在输入对应题目后在指定位置生成了试卷文件:

 

 

  当输入-1时,成功退出登录:

 

  当在登录状态下,输入“切换为XX”,成功切换用户身份且可以自动出对应的题目:

 

 

  测试完成

  在用户交互的建议:增加“切换为xx”这一命令提示。增加生成试卷成功与否的反馈。

 

五、总结

  郭家乐同学的个人项目实现完整,无论是代码规范还是程序使用体验都很不错。

  让我收益匪浅的就是郭同学代码注释的重要性,以及在筛选重复题目的优秀思路。但在部分细节郭同学仍需加强注意,如类的命名格式,用户体验的优化。

  相信这个学期的磨砺,郭同学的编程技术可以一飞冲天,化身大牛程序员,未来可期!!!

这篇关于湖南大学结对编程——分析结对编程队友的个人项目的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!