270
社区成员
发帖
与我相关
我的任务
分享
前几次作业比较简单,按题意创建Adventurer,Bottle等类即可,按照关系继承,所使用方法如addBottle等均在Adventurer类中实现。
后面由于实现逻辑(switch-case语句)一开始均在main方法中实现导致冗长,于是建立新类Game,逻辑均放在此类中
//Game类
public static void runGame() throws CloneNotSupportedException {
//...
options(strings, adventurers);//具体操作
}
}
public static void options(String[] strings,
ArrayList<Adventurer> adventurers)
throws CloneNotSupportedException {
switch (strings[0]) {
case "aa":
adventurers.add(new Adventurer(strings[1]));
break;
//...
}
}
后续由于指令太多,全在Adventurer类中实现会导致代码行数过多,于是新建Optional接口,并把除了addAdventurer的其他功能全部单独写成一个类,这样Adventurer中的代码就会大大化简。
//Adventurer类
//以addBottle为例
public void addBottle(String botID, String type, int effect) {
AddBottle option = new AddBottle(this);
option.operate(botID, type, effect);//逻辑在AddBottle类中的operate方法实现
}
虽然写JUnit是麻烦了点,但JUnit确实是在帮助我们找到代码bug方面十分有用的工具。使用JUnit,我们无需过多在意整体逻辑,仅需关注需要测试的代码部分,并要尽可能地想出所有情况,包括边界、非法、特殊情况等等。只要JUnit写得够详尽,充分考虑几乎所以情况,往往可以很早就发现代码的bug,帮助我们修复漏洞,那么过强测也不是问题。
面相对象更加强调顶层逻辑的思考。之前学c时仅需考虑实现过程即可,然而在JAVA中,更加注重的是类与类的关系。我们往往首先得思考将各种共同属性抽象为一个类,并找出这些封装好的模块间该实现什么借口来完成工作。在面相对象中,我们往往无需首先关心借口具体实现内容,先把外部构架建立好了,后面实现代码才会写起来十分顺利。
1.课下弱测和中测真是弱到爆炸了,感觉纯不怀好意啊
2.感觉对于纯0基础的人来说还是太超进了,很多重要思想估计没这么快就能接受