个人编程相互学习

学习对方代码

一、对方优点

1.1 代码编写方面

代码中的变量、方法的命名基本都能够做到自解释,在他人阅读的时候基本能够明白其意思,方便了合作的时候他人理解代码的大意。

1.2 项目设计方面

整个项目划分成了多个模块,按照MVC(model-view-controller)的思想,各个模块各司其职。这样子既方便开发时专注于某个模块的编写,也方便不同模块分工合作。

二、对方待改进之处

2.1 代码编写方面

  • 部分函数的代码量过大(例如在MakeQuestion.java中),可以尝试进一步将函数进一步拆解,提高可读性。
  • 可以增加对public等对外暴露的方法的注释说明,方便他人知道方法的作用、参数的含义、返回值的含义之类的。

2.2 项目设计方面

设计方面缺少对功能服务的抽象,整个项目全部都是实体类,类与类之间都是直接相关联,耦合度较高。可以尝试将一些功能对象抽象成接口或者抽象类,来降低耦合度和类之间关系的复杂度。

个人问题总结

在不同的类中使用Scanner的时候出现NoSuchElementException异常。

System.in在源码中的定义如下:

public final static InputStream in = null;

System.in是一个静态的,所有对象共享的,所以当使用close关闭了Scanner和System.in后,System.in之后不能再次打开。

所以要使用Scanner进行输入的时候,最好:

  1. 在方法参数中传入Scanner对象;
  2. 将Scanner对象封装成一个工具类;

Java读取文件时的相对路径问题。

这与Java底层的实现有关,默认相对路径是从当前的project文件夹开始

例如上述的工程解构,要获取工程中的doc目录可以这样书写

File file = new File("doc/")
posted @ 2020-09-30 13:42  Bankarian  阅读(218)  评论(0编辑  收藏  举报