軟體工程這門課在印象中就是一門理論課,因為以前沒有接觸過,想象中的場景是:老師開啟ppt,然後照本宣科的開始唸經。在第一節課上,作為見面禮,老師開場贈送的一波營養豐富的雞湯確實很是鮮美,聽後信誓旦旦的感覺一定會成就一番事業(不過我更覺得像是一場90分鐘的單口相聲)。所以課上聽得酣暢琉璃,課後不久也就忘得差不多了。然後隨之而來的是號稱11項的課後作業,其實都是一些簡單的活兒。有句話說得好:”難的事情不會做,簡單的事情做不好,那你能幹啥?“。其實我確實將任務都完成了,但後來分數很是不理想,因為沒能按規定的要求進行釋出。所以從第一次的課後作業中我體會到:即便你能做出結果,但是如果不能很好的展示給客戶,那一切都是徒然。就像你號稱自己精通十八般武藝,可是到了比武場卻不出拳一樣。
時間來到第二節課,我意識到如果把每節課當成老師的單口相聲來聽,也只能過過耳癮,就像拿零碎的時間來看新聞一樣,對當時看到的新聞表示震驚,或是感同身受,過了兩小時後再要你講述你看到的事情,卻一概不知。所以我決心在聽老師的課時,寫一些自己應該注意的事項。隨著90分鐘的逝去,居然足足寫了一頁的內容,同時也驚歎於看似笑點百出的“單口相聲”能有這麼多資訊量。要學會從別人話中提取資訊。同時課後也是留下了一大批作業,看似在前次作業的基礎上難度稍有增加,然後想著要以自己理想中的方式來完美實現。就拿題目中的一項“編寫程式,實現(正,負,分)數的加減乘除四則混合運算“來說,想著挺簡單的,但真正實現時才知道要想好所用的資料結構,設計流程,以及各種邊界情況。最後才感到要一次性完成一個理想中的作品是很有難度的,所以我先實現一個簡單的版本,然後在下一個迭代週期進行改進,Rome was not built in a day。在需求上不懂的一定要和同學多交流,討論。需求理解錯了後面的一切功夫都白費。我就是花了大半天的時間在一個很簡單的需求上(關於重定向的問題),然後始終不能實現。最後發現其實是自己對需求的理解錯了。
在程式實現部分體會到會寫程式碼不是程式設計的全部,自己對於以前做過的程式,現在看來居然一臉懵,就是因為缺少註釋。在網上看別人寫的程式碼都有規範的註釋,這一點是值得學習的。對於程式的縮排,話說縮排之後的程式碼可讀性真的很強,甭管程式碼是否正確,但是在外觀上看著就舒服。在部落格的書寫上,以前都是將結果論述出來就算完成任務,後來發現優秀的同學竟然將部落格寫的像一篇論文一樣,從問題的提出,到需求分析,再到解決方案的提出,實現過程中關鍵步驟的給出和功能程式碼的展示,以及未來的可擴充套件性的描述,講述的頭頭是道。甚是覺得自愧不如,應當學習。技術上的難點可以通過外界訓練來實現,但好習慣好作風的養成只能靠自己的內在意識。永遠不要把事情在最後一秒提交或實現,對於需求儘快完成,就算出現問題也會有很多修改的空間,戰勝自己的拖延症。
最後談一談在作業中遇見的幾個知識點:
1.對於java的equals方法和“==”之前有所瞭解他們的不同,但是在編寫程式碼的過程中問題恰恰就出現在這裡了,最後解決了。現在對於自己和讀者進行一下科普。
Java中的資料型別可以分為基本資料型別和複合資料型別這兩種。基本資料型別:Byte,short,char,int,long,float,double,boolean.他們之間的比較用“==”,比較的是值。
複合資料型別(類)用“==”進行比較時,比較的是他們在記憶體中的存放地址,除非為同一個new出來的物件(地址相同),他們比較結果為true,否則其餘的都為false。java中所有的類都是繼承自Object這個基類,Object這個基類中有equals方法,此方法的初始行為就是比較物件的記憶體地址。但是對於String,Integer,Date這些類中,equals方法有其自身的實現,而不再是比較類在對記憶體中的地址了。而對於複合資料型別中沒有覆寫equals方法的類,他們用equals方法比較的還是他們在記憶體中的地址值,因為Object中的equals方法也是用“==”實現的,所以用equals比較後的結果和用“==”比較的結果相同。以String型別舉例:
String s1 = "Monday"; String s2 = "Monday"; s1==s2為true, s1.equals(s2)為true,因為s1與s2指向同一個“Monday”物件,值也相同。
String s1 = "Monday"; String s2 = new String("Monday"); s1==s2為false, 因為s1與s2引用兩個不同的Monday物件,記憶體地址不同。 s1.equas(s2)為true,因為值相同。
引用自 http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html
2.對於詞頻統計中文字的儲存:txt檔案在詞頻統計時要儲存為ANSI格式(預設的),不要設定成UNICODE格式。
3.java在命令列編譯問題。我的程式開頭有 package com.nune.homework這種包語句,類名叫Test,編譯時應該寫為 Javac -d . Tset.java (意思是在當前目錄下的 com/nenu/homework下生成.class檔案) 然後繼續執行Java com.nenu.homework.Test才好使。起初我是這樣寫:Javac Tset.java 然後執行 java Test 會報錯"找不到類"。
路漫漫其修遠兮,吾將上下而求索。
---------------共勉!