现代软件工程系列 结对编程 两周写好3D 陆战棋
from: http://cid-ba6a52af193f301f.spaces.live.com/blog/cns!BA6A52AF193F301F!122.entry
?
Oh,my pair project
From new Pair(HuangShuo,WangGuan)
簽入代碼,發送郵件,關上Flex Builder。糾結了差不多兩周的Pair Project終于能夠有個了結了,此刻跑來碼碼字,感到甚為解脫。
我們Pair,Wang Guan和我,剛面對這個作業時,基本上是傻眼的,因為除了寫點C和Java基本什么也不會了。當我發現了Silverlight網上教程的缺乏又聽到有同學說到Flex后,我們選擇了Flash+Papervision3D類庫來實現我們的3D陸戰棋,當然依舊是什么都不會。
我們開始瘋狂的Baidu,搜索各種諸如Flash3D,pv3d教程的關鍵字,然后拿到源碼,在機器上試。我們最開始的Pair Programming就是以一起想辦法用源代碼跑出網上的效果開始的,但是基本上是悲劇的,不斷的嘗試,卻依舊弄不懂怎么在MXML里面顯示出那個旋轉的立方體。
所有的知識對我們兩個都是新的,對它們完全沒有概念。我覺得這種情況下的Pair Programming是沒法進行了,必須先弄點基礎。于是我們開始了分工,WG開始研究陸戰棋的規則的3D擴展,我則開始攻關flash 3d圖形方面。
慶幸flash的普及度的確很高,教程很多,各種牛人個人主頁也多,我開始瘋狂看教程,調代碼,然后給每一個我能找到的教程作者的email發郵件提問。這樣度過了黑暗的好幾天,終于慢慢見到光明了,Cube轉動起來了,視角拉動起來了,終于有個牛人回我郵件了,最后我們來回了13次郵件。
我掌握了怎么設點,畫線以后,我就告訴WG,讓他開始設計棋盤,幾番爭論,大概確定了棋盤的樣子。我向WG講了代碼的寫法,然后他開始實現棋盤線條的代碼。當最后WG改出了一個正確的棋盤時,拖動著那個精致的空間網格,感受著我們自己弄出來的3D效果,真的覺得這是天賜的藝術品啊。
通過不斷的看Papervison3d的api,不斷的試代碼,我終于覺得能開始做自己的項目了。于是我們進行了項目中最關鍵的一次Pair Programming,我們利用編譯課上機時間,在機房里Pair完成了整個項目的類的設計與程序結構的設計。我們一起分析出類,然后找屬性,寫方法頭,開始是WG用鍵盤,后來我用。一個明顯的好處是,寫完一條自己不確定的語句,馬上可以跟Pair一起縷一縷思路。一下午下來,感覺甚為清爽,因為終于清楚這個項目的做法了。
接下來的工作,又開始分工。我來做圖形外觀方面的東西,這個容易測試,也不必要兩人做。WG則寫了很多內部邏輯處理的代碼。這時我們開始了項目中用到最多的一種Pair Programming了,也就是WG用他的代碼開始跑,我沒有寫代碼帶來的主觀偏見,很適合出測試樣例,代碼出了問題,馬上我們從比較抽象一點的層面來討論這個事件的邏輯,最后WG哦的一聲,弄明白了,回到代碼層次迅速改好代碼,繼續上面的過程。這時很常見的就是WG坐在電腦前,我站在他身后,走來走去,然后俯身去用鼠標出測試樣例;WG則是轉身來跟我討論,完了再轉回去改代碼。
?
軍棋本來棋子就麻煩,加上我們每個棋子都會有三種貼圖,在不同的時候顯示,來增強用戶的體驗效果,因此關于換貼圖,關于相互吃子的邏輯,我們反復這樣Pair了好多次,改了無數bug,也不幸引進了無數bug,最后也只能弄到自己找不到bug,其實可能還是有。由于軍棋中很多類似的邏輯代碼,我們又用了很多直接暴力枚舉的代碼,不在一起寫代碼而在一起debug,避免了在那些邏輯簡單打字量大的代碼上浪費Pair的時間,我覺得這個方法還是成功的。
現在基本做完了這個作業,回過頭來想想,其實還是有很多經驗教訓的。
一條經驗是,學好基本的東西,真的很有用。Java的基礎幫助我們基本上沒有在ActionScript的語法與用法上花費什么時間。另外一個再次被印證了的經驗,搜索引擎是個好東西,有了互聯網,似乎真的不能說什么“流行的”技術是不能掌握的——當然還是要花時間的,說不定還要痛苦個幾天。
教訓更多的體現在總體的設計上。Actionscript是面向對象的,一開始關于flash3d什么都不明白,我們并沒有太在意面向對象的分析設計方法的運用,很多地方有些隨意,如果最開始能老老實實的畫類圖,分析用例,也許不會后來突然發現重要的屬性取不到,要改很多代碼了。再就是一些邏輯,一開始我們并沒有很完全的去分析清楚,沒有用很優雅的處理方法寫程序,后來改代碼,只能瘋狂的用if,寫到最后,有些代碼真的改得很難看了。
整個過程,也讓我們對一些問題有了親身的體會。最明顯的就是“回歸測試”這個東西,我之前一直不太相信它的必要性,這次改行棋邏輯的代碼,算是讓人體會到了回歸測試多么重要,很多次都是改對了一個貼圖顯示,新毛病又出來了。。。
也不過是兩周不到以前,無助的看著Papervision3D 的api,都有些想放棄這作業了,若干天后的現在居然能做出個東西來,還能現在來碼碼字,真有種熬過黎明前的黑暗的感覺。這項目,我會記住很久了。
最后說點題外話,因為調試的時候程序崩潰,強行關IE,我這vista悲劇的藍屏了兩次,死機了一次;另外,Flash3D現在還不支持硬件加速,全是CPU算出來的,這些天我的CPU也是長時間接近100%,也許哪天Flash3D能發揮點顯卡的能力了,我真應該把這個Pair Project再拿出來試試,讓CPU看著顯卡出力,它自己清閑爽一爽。
總結
以上是生活随笔為你收集整理的现代软件工程系列 结对编程 两周写好3D 陆战棋的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rocketmq批量消费
- 下一篇: 校园招聘 - 比较容易的面试题