OO學習第二階段總結

  面向對象課程的第二個階段結束了,做業們由簡單的玩具模式步入到複雜的多線程地獄模式,由以前的算法簡單實現有坑轉變成算法複雜實現有很大的坑.一個最重要的心得就是必定要在動手敲代碼實現以前對整個程序的實現作到心中有數,想好每一個模塊的功能和藉口,這樣才能避免在後期的時候改來改去,甚至出現好笑的bug.簡而言之就是由爲所欲爲搬磚,轉化成照着藍圖搬磚,這樣很容易就能還在雛形的時候發現哪塊磚放錯了位置.固然後期也須要測試,看看哪些磚會在住人的時候掉鏈子.算法

第五次做業:

類圖安全

 

度量圖:多線程

       個人問題在於把太多的任務交給了電梯類自己去作,應該將這些任務或者說是功能拆分出來,劃分出其餘類的.主要的bug在於電梯運行過程當中在樓層和目標樓層之間插入新的指令以及到達主指令的目標樓層以後丟棄不攜帶的指令並將這些指令從新放入指令托盤.其實我在實現以前也思考到這個問題,但並無記錄下來而後實現的時候就忘記了...測試

第六次做業

類圖:線程

度量圖:對象

第六次做業的內容仍是很清晰的,個人問題仍是說沒能將問題獨立成方法或者類,嘗試在一個大類或者大方法中解決全部的問題,好比此次的watchThread,全部的監控邏輯都寫到了一塊兒,而後就飄紅了.我想了下這種問題是怎麼產生的,而後發現是本身好多時候不知道如何在類與類,方法與方法之間傳遞正確的信息,直接共享變量彷佛又不大合適,因此只好寫成一團...無論怎樣,面向對象的思想仍是須要繼續修煉啊.blog

bug主要產生於各個線程的recover和監控之間的衝突,我上課注意老師講的這塊,老師創建快照的方法彷佛是每次掃描創建一個樹狀結構文件系統映射,而個人實現方法是每次掃描一遍文件系統,既複雜又耗時,因此就容易出現bug.文檔

第七次做業

因爲本身的一些緣由,第七次做業血崩了,最終的實現狀況太慘烈了,致使我甚至不想把類圖和度量結果放上來,我簡單的分析一下bug狀況.監控

一個是須要本身從新實現求最短路徑的方法否則GUI的實現太耗時,會出現奇奇怪怪的現象,尤爲是在不少出租車同時接單的狀況.另外一個時間上的處理,由於是直接獲取系統時間而後取捨的,因此有的地方處理很差會出現一些小問題.變量

總結:

       隨着程序複雜度提升,尤爲是多線程的引入,使得理解一份代碼變得愈來愈困難,因此文檔的重要性愈來愈高.每一次都必定要好好寫readme,我有一次拿到的readme甚至變成了亂碼,這對互測就形成了很大的困難.好好寫文檔也是對本身的負責,我曾經有一次的bug就是在寫文檔的過程當中想通並修正的.

  多線程的安全問題其實須要好好思考,有的是邏輯上並行,其實在一個線程裏前後處理的,有的是邏輯上有前後實際上是在不一樣線程內並行處理的.只要涉及多個線程就必定要好好地思考線程安全.另外synchronized關鍵字雖然有助於解決線程安全,可是也不能濫用啊!

相關文章
相關標籤/搜索