个人编程相互学习
学习对方代码
一、对方优点
1.1 代码编写方面
代码中的变量、方法的命名基本都能够做到自解释,在他人阅读的时候基本能够明白其意思,方便了合作的时候他人理解代码的大意。
1.2 项目设计方面
整个项目划分成了多个模块,按照MVC(model-view-controller)的思想,各个模块各司其职。这样子既方便开发时专注于某个模块的编写,也方便不同模块分工合作。
二、对方待改进之处
2.1 代码编写方面
- 部分函数的代码量过大(例如在
MakeQuestion.java
中),可以尝试进一步将函数进一步拆解,提高可读性。 - 可以增加对
public
等对外暴露的方法的注释说明,方便他人知道方法的作用、参数的含义、返回值的含义之类的。
2.2 项目设计方面
设计方面缺少对功能服务的抽象,整个项目全部都是实体类,类与类之间都是直接相关联,耦合度较高。可以尝试将一些功能对象抽象成接口或者抽象类,来降低耦合度和类之间关系的复杂度。
![](https://gitee.com/bankarian/picStorage/raw/master/20200929150529.png)
个人问题总结
在不同的类中使用Scanner的时候出现
NoSuchElementException
异常。
System.in
在源码中的定义如下:
public final static InputStream in = null;
System.in
是一个静态的,所有对象共享的,所以当使用close关闭了Scanner和System.in后,System.in之后不能再次打开。
所以要使用Scanner进行输入的时候,最好:
- 在方法参数中传入Scanner对象;
- 将Scanner对象封装成一个工具类;
Java读取文件时的相对路径问题。
这与Java底层的实现有关,默认相对路径是从当前的project文件夹开始
![](https://gitee.com/bankarian/picStorage/raw/master/20200925192820.png)
例如上述的工程解构,要获取工程中的doc
目录可以这样书写
File file = new File("doc/")