結對編程項目感想
受益匪淺啊受益匪淺,出去阿裏雲短信的JAR,總共約1600行,目前為止沒有完成這麽長的項目過。首先我上學期並沒有學JAVA課,暑假到開學自學的JAVA,經過這次結對編程,可以說對JAVA編程了解的七七八八了。第一個登錄UI編寫時對JAVA的編程習慣不太適應,在類中建新類,方法又在新類外,帶來了一系列麻煩,在後來又重構了第一個UI,給我心態也帶來了一些影響,還好最終是完成了,比較順利也很快樂。
首先說一下UI。UI的學習是有很強的反饋的,編寫完一個UI就能立刻獲得一個圖形界面的反饋,給人的成就感是很大的,因此UI編寫是讓我感覺很快樂的部分。盡管我是在類中新建JFrame而不是extend JFrame,但是我認為這樣將類與窗口分開更便於編寫和維護。困擾我時間最長的問題是在按下按鈕時獲得文本框返回值的問題,這個問題在一個類使用一個Frame的情況下就很順利的解決了。另一個問題就是出題界面,點擊下一題後就要出現下一題的內容,如果創建新窗口就太麻煩了,因此我把RadioButton和label分開,使用setText改變已有label的值,並且把所有題目提前生成並以數組儲存,設置當前量來確定目前是第幾題,以此完成了下一題刷新頁面的效果。另外一提,在寫感想的同時修了一個下一題按鈕與完成按鈕只能單向變化的BUG...
然後是復用之前的代碼,由於結對對象使用了C++編寫題目生成,因此就使用了我的JAVA代碼。首先我的JAVA代碼是分段輸出題目的,因此將每一段保存就可以得到一道題的字符串,使用javax.script.ScriptEngine的eval就可以得到string算式的值,而eval不支持平方、開根號、三角函數等,我就用另一個字符串,分段將平方、開根號、三角函數計算完後。加入到字符串中,以此字符串進行計算,就可以得到正確答案。同時分段算式也保存下來,隨機將每段的結果無效或者反向操作,就可以隨機生成三個錯誤答案了。同時文本讀取也可以直接使用。可以說我的JAVA代碼很適合這次的需求。
其他零碎的東西有很多,查重是利用字符串哈希;用戶名和密碼的檢查都是利用getText和getPassword,設置了很多條件;題目的選項清空一開始使用setSelected(false),然而還是有小黑點,因此使用了group.clearSelection();短信驗證碼使用阿裏雲的jar和類,只需要更改KEY、簽名等等即可……等等很多東西不再贅述,一個項目的開發不只是功能的實現,還有構思、增加需求和DEBUG。
最後附上效果圖和需求分析圖。
結對編程項目感想