第五次做業安全
由於第五次做業是在第三次做業的基礎上改的,因此出現了與第三次做業同樣的問題,即圈複雜度超標和嵌套現象嚴重。同時,因爲對多線程的不熟悉,將一些功能集中的放入了一個類裏,這也是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.雖然盡力的完善設計,可是實現的過程當中總會有一些問題。只是在處理這些問題時,須要思考的是這個問題與總體設計的聯繫,這樣才能及時的發現總體設計的問題,否則,這個問題解決了,僅僅是解決了局部的問題。