OO第二次作业总结
第五次作業(yè):多線程電梯
?作業(yè)內(nèi)容:相比于前兩次電梯作業(yè),本次電梯作業(yè)新的變化是多電梯運(yùn)行。要想實(shí)現(xiàn)功能,便需要學(xué)會(huì)使用多線程機(jī)制,使三部電梯保持相互獨(dú)立的對(duì)分配的請(qǐng)求進(jìn)行處理。電梯能夠處理捎帶,且調(diào)度時(shí)采用運(yùn)動(dòng)量均衡策略去響應(yīng)樓層請(qǐng)求。
類(lèi)圖:
度量圖:
?
bug分析:存在兩個(gè)bug。在多線程電梯的調(diào)度過(guò)程中,經(jīng)過(guò)一系列的調(diào)度操作后,會(huì)出現(xiàn)電梯運(yùn)動(dòng)量疊加的錯(cuò)誤,原因在于在運(yùn)動(dòng)量進(jìn)行更新時(shí)的條件分支判斷上存在漏洞,在部分情況下會(huì)對(duì)于同時(shí)響應(yīng)完成的請(qǐng)求進(jìn)行重復(fù)計(jì)數(shù),導(dǎo)致整體運(yùn)動(dòng)量計(jì)算錯(cuò)誤。另外一點(diǎn)同樣是由于代碼邏輯層次的復(fù)雜性而導(dǎo)致的,在對(duì)于電梯判斷捎帶請(qǐng)求的分支中存在著FR后對(duì)ER的捎帶判斷漏洞。
?
分析評(píng)價(jià):從度量圖中,可以明顯的看出電梯對(duì)于入隊(duì)請(qǐng)求的處理的方法中,分支判斷條件太多,使得代碼復(fù)雜性上升,不利于維護(hù)。這也是由于設(shè)計(jì)上的缺陷導(dǎo)致,不能很有效的將分配機(jī)制完善以及其他一些機(jī)制進(jìn)行合并,導(dǎo)致代碼復(fù)雜性上升并且代碼數(shù)量也較多。
第六次作業(yè):IFTTT
作業(yè)內(nèi)容:本次作業(yè)是實(shí)現(xiàn)一個(gè)監(jiān)控程序,針對(duì)于給定范圍內(nèi)的文件屬性的變化,通過(guò)預(yù)先設(shè)定的觸發(fā)器的反應(yīng)從而執(zhí)行相應(yīng)操作。監(jiān)控的范圍限定為一顆目錄樹(shù)。
然而,在本次作業(yè)中,由于時(shí)間安排上的不合理以及對(duì)于代碼的理解還不夠深入,導(dǎo)致未在規(guī)定時(shí)間內(nèi)完成。在面對(duì)這種文件的監(jiān)控時(shí),并不能很好的實(shí)現(xiàn)對(duì)文件屬性的掃描、監(jiān)控。另外,由于個(gè)人原因?qū)е碌乃伎荚O(shè)計(jì)上的時(shí)間消耗過(guò)大,并存在部分不合理的設(shè)計(jì),從而使得無(wú)法正常實(shí)現(xiàn)題目所要求的具體功能。
?
第七次作業(yè):多線程出租車(chē)
作業(yè)內(nèi)容:本次作業(yè)模擬出租車(chē)的乘客呼叫與應(yīng)答系統(tǒng),開(kāi)發(fā)相應(yīng)的程序,繼續(xù)訓(xùn)練線程安全設(shè)計(jì)方法,同時(shí)應(yīng)用課堂所講授的面向?qū)ο蠓治龇椒ê驮O(shè)計(jì)原則來(lái)開(kāi)展分析和設(shè)計(jì)。
類(lèi)圖:
?
?
?
度量屬性:
?
?
?bug分析:bug一個(gè)。在乘客發(fā)出請(qǐng)求后的3s內(nèi),應(yīng)該對(duì)所有進(jìn)入乘客請(qǐng)求服務(wù)區(qū)間的空閑車(chē)輛進(jìn)行標(biāo)記,即搶單,但在此期間,若已進(jìn)行搶單的出租車(chē)響應(yīng)了另一請(qǐng)求并執(zhí)行,應(yīng)當(dāng)對(duì)其狀態(tài)進(jìn)行更新,以防止出現(xiàn)同時(shí)占用同一輛車(chē)的情況。然而,在代碼中,并未對(duì)該種情況進(jìn)行處理,導(dǎo)致有時(shí)會(huì)出現(xiàn)程序輸出錯(cuò)誤的情況。
分析設(shè)計(jì):在這次作業(yè)中,主要考察的是課上所講的SOLID設(shè)計(jì)原則以及各種設(shè)計(jì)的注意事項(xiàng),即對(duì)代碼的設(shè)計(jì)、代碼風(fēng)格的考察。
在本次設(shè)計(jì)中,層次化抽象原則體現(xiàn)在將本次出租車(chē)問(wèn)題抽象成為調(diào)度器類(lèi)、地圖類(lèi)、出租車(chē)類(lèi)、請(qǐng)求類(lèi)、請(qǐng)求隊(duì)列類(lèi)。而各個(gè)類(lèi)之間的方法均衡、分配上還是略有欠缺,部分方法的長(zhǎng)度略微大。并且,部分分支的判斷條件的部分使得代碼邏輯更難被讀懂。
?
心得體會(huì)
這一單元的三次作業(yè),難度都十分的大,都是對(duì)于多線程的設(shè)計(jì)與調(diào)試。由于課程中后期的代碼對(duì)于各個(gè)類(lèi)以及類(lèi)中方法的嚴(yán)密、均衡要求升高,因此,在真正開(kāi)始作業(yè)前,還是應(yīng)當(dāng)多花時(shí)間去對(duì)問(wèn)題進(jìn)行細(xì)致的分析,并考慮各種可能出現(xiàn)的情況以及哪些情況的判斷或功能的實(shí)現(xiàn)能夠進(jìn)行整合,以此避免bug的出現(xiàn)并使得代碼更為簡(jiǎn)潔。否則,將會(huì)出現(xiàn)由于設(shè)計(jì)上的漏洞而不得不耗費(fèi)大量時(shí)間重新設(shè)計(jì)的情況,致使時(shí)間被浪費(fèi)。除此之外,和同學(xué)的交流還是十分重要的,因?yàn)閷?duì)于一個(gè)人來(lái)說(shuō),作業(yè)設(shè)計(jì)上的一些要求容易出現(xiàn)理解上的偏差,如果能多與同學(xué)進(jìn)行交流,不僅能很好的發(fā)現(xiàn)、修改理解上存在的問(wèn)題,也能了解到其他人的設(shè)計(jì)方案,并將其與自己的設(shè)計(jì)方案進(jìn)行相互對(duì)照,找出自己設(shè)計(jì)上的不足,從而在之后的作業(yè)中加以改進(jìn)。
轉(zhuǎn)載于:https://www.cnblogs.com/98-0901/p/8978136.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: C#中的三种timer
- 下一篇: wpf 换行符