其实在第一次布置关于规格的做业时,我就尝试以规格,面向对象方法规格,java编程规格等多个关键词在中文互联网上搜索过,试图对规格和规格的发展得到更多的了解,但获得的有用信息寥寥无几.因此直到如今我还一直好奇,若是说注重编程注释的质量已是共识的话,为何规格却没有得到更多的注意呢?(规格指狭义的布尔表达式等,这是个人猜想,我没有参加过真正的工程开发,因此对业界认知不足.可是确实公开的资料寥寥).若是说没有获得你们的承认的话,说明多是存在某些不足,咱们为何要坚持以一种反人类的布尔表达式的JSF来代替天然语言的注释呢?这只是我一家之言,可能老师有更多别的方面的考虑,好比可以经过工具检测,更加规范等等,这些都是我考虑不到的.java
按照个人理解,规格化设计实际上是和面对对象的编程思想,以及软件工程这门科学一块儿发展起来的,三者是相辅相成的.程序员
在计算机发展的最初,从汇编语言一直到面向过程语言,像BASIC和C语言的流行,是没有规格这个说法的.人们经过辛苦地编程和debug完成工做,每每程序中充满了goto这种天马行空的作法,编程变得magic.通过科技的发展,程序变得愈来愈多样化和功能愈来愈强大,代码的数量也愈来愈长.为了让代码正常工做,程序员只好放弃goto这种很差的特性,经过结构化设计让程序更加规范和容易维护.编程
可是很快代码超过了一个小团队可以完成的上限,须要几十几百我的协同完成.这个时候,人们发现让程序运行起来变得愈来愈困难,de掉100个bug会出现200个新的bug.无可奈何之下,人们只好寻求另外的编程思想,那就是面向对象的思想.将大的工程分工,分红一个个小的模块,模块再细分,直到变成重复使用的数据结构和针对数据结构的操做方法,就是对象和方法.为了更好的描述对象的范围和特性,为了明示方法的操做方法,要求,和对数据形成的结果,产生了不一样的规格化语言.咱们接触的JSF算是其中一种.数据结构
除了第二次有几个类由于完成的比较晚,没有来得及写repOK方法以外,互测者并无报告更多的关于我规格方面的bug,固然,这是由于测试者的善良,个人规格化仍是有不少不足和改进空间的.多线程
/** * *@REQUIRES: none *@MODIFIES: System.in and System.out;this.requestItems; *@EFFECTS: while System.in has a line ,a line will be consumed; *some information will be written in System.out; *if the line can construct a Request,a new RequestItem will be added to the list; *if the line is a command line, call the command function */ public void run() { Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String inputString = scanner.nextLine(); if(InputHandler.isLoadRequest(inputString)) { String[] strings = inputString.split(" ",-1); SysMain.load(strings[1]); } else if(inputHandler.isRoadChange(inputString)) { SysMain.setRoad(inputString); } else if(inputHandler.isLegal(inputString)) { Request request = new Request(inputString); synchronized (requestList) { requestList.add(new RequestItem(request)); requestList.notifyAll(); } } else { System.out.println("##illegal request"); } } scanner.close(); }
第一是类的功能不明确致使的方法的复杂,以致于只能用天然语言描述,这个问题出如今InputThread的run方法中,咱们能够改正这个方法工具
public void run() { Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String inputString = scanner.nextLine(); inputHandler.handle(inputString); }
scanner.close();
}
这样就能够保证关于输入的操做由InputHandler负责,而Thread只负责运行.测试
第二是方法的复杂程度过高,不得不使用天然语言.此处其实例子不少,就不赘述了.this
第三则是对布尔语言的掌握程度不高致使的错误,这些虽然可能测试者看在写的颇有诚意的份上放过了,可是实际上是可以改正的.spa
其实这三次做业仍是特别锻炼能力的,由于三次是创建在统一基础上的,涉及到多线程,继承,GUI等问题,数次重构也让我对有关知识了解的更深入.线程