早在大一就據說了oo的各類傳奇故事,大二下學期終於也開始了個人oo之旅。java
能夠看出在第一次做業中,個人耦合度很是高,還停留在面向過程式的設計。編程
能夠發如今第二回做業中雖然我有意識的拆分類,但組織結構仍然很差,耦合度仍然很高。設計模式
能夠分析發現,此次的做業有了一些oo的樣子,對input, output, terms有了各自的package,而且耦合度較前兩次下降了一些。但設計的架構仍然不夠優秀,有很大的進步空間。架構
在前兩次做業中,我在互測中有bug。函數
第一次做業出現bug的緣由是沒有讀懂指導書,在ddl截至前才明白非法空格的含義,在改動代碼時過於慌忙,沒有處理字符串開頭和結尾的非法字符。學習
第二次做業產生的bug在優化中,由於是熬夜寫的,沒有進行充分的測試,且是面向過程式的思考結果。測試
對於找到別人的bug,我主要有兩個思路。優化
首先是針對指導書的邊界樣例進行總結和測試。設計
其次是編寫自動化測試。對象
前三次做業我有很多進步,但整體不算滿意。
下面分爲收穫和不足兩部分來總結。
有了面向對象的基本概念,對繼承和接口有了初步的認識。
開始學會先設計再寫代碼的思惟方式,明白了設計結構對完成代碼的重要性。
在閱讀別人代碼的過程當中學習到一些java編程的技巧和方式。
時間規劃上有很大不足,有過熬夜到很晚的經歷。
設計仍然不夠簡潔和精巧,寫的代碼結構複雜,不夠明瞭。
測試不足,有兩次互測中被測出bug的經歷。
對多態和設計模式等了解不足,應用不足。
我對本身的自學和探索能力不太滿意。
有獻血計劃,因此oo做業絕對要及時完成,不在晚上十一點半後編程。
多閱讀優秀的項目代碼,提升姿式水平。
補充課外閱讀讀物,擴展設計模式知識。
對做業內容不算滿意,感受沒有展示足夠的oo思想。
對課堂內容不太滿意,這裏舉兩個例子。第一是某節課講到的clone函數,老師並未提到任何關於深拷貝和淺拷貝的內容,只強調了和=直接賦值的區別,但直接使用clone()是淺拷貝,和直接=賦值有一樣的改變其中之一的值,另外一個隨之改變的問題,這纔是編程中常遇到的坑。第二是關於接口,首先我先說明這節課因爲我趕一個ddl沒有特別認真的聽課,但課後看ppt的過程,接口部分舉的例子是同一層的所有類使用接口,這讓我產生了極大的困惑,這和實現繼承父類的抽象函數有什麼區別嗎?在系羣中提問後才明白了接口的真正意義所在,解決除簡單的樹形結構外其餘組合的可能性。我認爲這是ppt設計很是很差的一個典型例子,舉一個特別不typical的例子,而不展示重點。
oo仍是更可能是一個自學的過程,討論也很重要。
由上可見我在第三次做業中的設計仍然很是彆扭,不是最佳的表達式,項和因子的形式。預計重構遞歸降低的過程,參考助教提供的enum寫法。