第五次做业安全
由于第五次做业是在第三次做业的基础上改的,因此出现了与第三次做业同样的问题,即圈复杂度超标和嵌套现象严重。同时,因为对多线程的不熟悉,将一些功能集中的放入了一个类里,这也是McCabe Cyclomatic Complexity和Nested Block Depth标红的缘由。多线程
2.类图架构
从类图能够看出度量分析中体现的问题,即在方法的分配上不平均,将大部分功能都交给了dt类,致使这个类很冗长,从而也影响了整个程序的简洁性。学习
3.BUG测试
对于这一次的电梯做业,第一次用多线程来解决问题,感受压力很大。在思考,设计和实现的过程当中,碰见了不少问题,用了不少的时间。直到最后,对多线程安全的理解也是似懂非懂,致使在公测和互测中出现了不少BUG。首先公测中,出现几个粗心的BUG,(1)没有输出T(2)没有把结果输出到result,输出到了控制台。这两个简单的BUG,都是由于没有仔细的阅读指导书致使的,因此要认真的阅读指导书的要求,才能避免一些简单的BUG。而后出现了指令分配错误,指令执行的时间输出以及指令自己的输出有问题和电梯选择不正确的BUG。而回到程序中去解决BUG的时候,发现主要是qingq类,即分配指令的类出现了问题。而这个类的设计问题,致使出现了一系列的问题,因此对每个类的设计都应该反复的思考和测试。做为被测者,被发现了两个BUG,一个是测试完后程序的线程没有关闭,这个是由于对多线程的不熟练致使的。做为测试者,发现了对面的公测出现了三个错误,全是关于捎带问题的。此次做业比较难,不只总体的设计上容易出现问题,在一些细节上的处理也容易出现问题。第一次多线程做业,带来了不少关于多线程的反思和经验。ui
第六次做业spa
第六次做业是对文件的各类操做与监控,由于对做业目标和不少新操做的不清楚,没有及时作完提交,就不作分析了。线程
第七次做业架构设计
第一次出租车做业,仍然出现了以前的问题。由于将不少的功能放到了taxi类里,以及if-else的大量使用,致使嵌套严重。所以之后须要注意这些问题。设计
2.类图
此次的类图比较简单。
3.BUG
尽管这是第三次多线程做业,可是对于多线程的理解和具体实现,仍然有不少不明白的地方。就此次做业而言,公测与互测中,出现了两个BUG。公测中有一个BUG,是当输入指令的关键字错误时,没有报错。互测中的BUG是,当没有出租车响应乘客请求时,没有告知乘客。而做为测试者,发现了对方的两个BUG,一个是输出格式的错误,没有输出途径节点的坐标和时刻,另外一个BUG,是输出时间不正确,回到对方的程序中,发现他的设计没有问题,只是在计算时间的时候用到了系统时间,而系统时间在调用gui,计算最小距离时,可能出现了延迟,致使最后算出的时间多了100ms或200ms。
心得体会
1.第一次接触学习多线程,发现理解起来有困难。而在用多线程解决问题时,发现对于多线程的项目的架构设计也有困难,由于要清楚创建多少个类,多少个线程,每一个类都承担什么功能,线程与线程之间的关系,才能将更好的解决问题。
2.线程安全是多线程的关键。对共用资源的分析,是否对其进行保护,将影响程序是否出现一些不合乎常理的错误。由于多个线程同时运行的状况下,会对公共资源进行争夺,若是不加管控,可能会对公共资源进行难以意料或是不想要的操做和改变。因此在设计时,要分析线程之间的关系,要分析清楚共用资源。
3.虽然尽力的完善设计,可是实现的过程当中总会有一些问题。只是在处理这些问题时,须要思考的是这个问题与总体设计的联系,这样才能及时的发现总体设计的问题,否则,这个问题解决了,仅仅是解决了局部的问题。