现代软件工程 第四章 【结对编程】练习与讨论
4.7.0 結對編程的練習題
???????? 地鐵導航和遍歷
4.7.1 ?結對項目的案例和論文
在現代軟件工程教學的過程中,同學們已經總結了不少切身體會。例如:
總結1[i]:
那是project到了比較關鍵的創造階段,整整一天,我們倆椅子靠椅子的坐在電腦前,一邊討論一般coding,那次才真正的體會到結對真的能夠帶來效率。一整天的coding是容易走神的事,還好有pair在旁邊指導,總是不斷在我敲某某變量之前提前告訴我成員變量的名字,數據修改時幫忙檢查是否有漏掉的,變量和函數定義的時候一起為其取名字,感覺有點眼花了,就換了個角色,我也開始對他“指指點點”了,一個人coding,一個人review,確實能減少一些不必要的錯誤,減少一些漏洞,算法實現后一起做些簡單的測試,看到bug了再一起分析,我能明顯的感覺到與以前的個人編程不一樣,我們能比較快的找到bug初始點,并能提出比較的修改方法。特別是當看到功能進一步實現時,心里確實挺happy,更重要的這份感受有同伴與你一起分享。
總結2[ii]:
于是我們進行了項目中最關鍵的一次Pair Programming,我們利用編譯課上機時間,在機房里Pair完成了整個項目的類的設計與程序結構的設計。我們一起分析出類,然后找屬性,寫方法頭,開始是WG用鍵盤,后來我用。一個明顯的好處是,寫完一條自己不確定的語句,馬上可以跟Pair一起縷一縷思路。一下午下來,感覺甚為清爽,因為終于清楚這個項目的做法了。
學術界、工業界對結對編程已經有不少研究,請閱讀至少兩篇相關論文或論文[iii]。
4.7.2 ?性格對合作的影響
人和人不一樣,在和別人合作的時候,要注意各人表達觀點的方式和思考的方式不盡相同。請看網上關于MBTI的文章[iv],測試并分享各自的MBTI類型,討論不同性格類型對合作有多大的影響, 在合作的各個階段應該如何應對[v]。
4.7.3? 是否需要有代碼規范
對于是否需要有代碼規范[vi],請考慮下列論點并反駁/支持:
代碼復審檢查表: http://blog.fogcreek.com/increase-defect-detection-with-our-code-review-checklist-example/?
4.7.4? 代碼復審的討論
小飛: 哇,這么多酷的C++ 功能都不能用,那我們還學什么C++,為了迎接考試,我都把Operator Overload、Polymorphism背得滾瓜爛熟了,為什么不讓我用?
阿超: 我們寫程序是為了解決問題,不是“為賦新詞強說愁”,這些高級的語言特性,不是不讓用,而是要用得慎重,不要動不動就寫三五個類,一個套一個,要把注意力集中在能否用簡潔的方法解決問題上來。
小飛: 這么多規范,我不知道怎么寫第一行程序了。
阿超: 自我復審也很重要——把代碼擺在面前,當作是別的菜鳥寫的。把你通常問別人的,以及別人會問你的問題都自己問一遍。這樣就能發現不少問題。
小飛: 如果開發者很厲害,那么復審者就沒有什么作用,也許這些復審都是走過場?
阿超: 同理可以推論,如果開發者很厲害,那么測試人員也沒什么作用,也是走過場,干脆把他們送回家得了。我們敢這樣做么?
小飛: 這些規范啊, 建議啊, 都是細枝末節的東西, 我們要做世界級的軟件,搞這些東西是不是太小家子氣了?
阿超: 首先世界級的軟件也會因為小小的紕漏而導致世界級的問題。例如我們常常聽到的安全漏洞和緊急補丁。其次,軟件的開發是一個社會性的活動, 有它的規律。其中一個規律就是“破窗效應”(broken windows theory)[vii]?,如果團隊成員看到同伴們連一些細小的規范都不遵守,那自己還要嚴格執行單元測試么?另一個成員看到這個模塊連單元測試都沒有,那他自己也隨意修改算了。這樣下去,整個軟件的量可想而知。
4.7.5 閱讀別人的代碼有多難?
??? 我們經常抱怨閱讀別人的代碼很難, 我們自己在寫代碼的時候,是否考慮到如何讓代碼更易于閱讀和維護呢?
別人的代碼:
來源: http://dhruba.name/2012/08/21/do-you-hate-reading-other-peoples-code/?
http://kb.cnblogs.com/page/192086/
4.7.6? 結對編程中不好的習慣 - 你經歷過么?- 喜歡發號施令的人總是對敲鍵盤的人說:“到末行,加個反括號,然后…”。他不去關注解決方法和下一步該怎么做,而過度關注一些編程細節。
- 拼寫糾錯者坐在你旁邊,糾正你輸入的每個錯誤字符。當然,他沒有時間來真正的進行導航。
- 深藏不露者僅僅自己敲著代碼而不告訴別人他在做什么。領航員不得不靠自己去弄懂代碼。關于該用什么方法,該選擇哪種設計,領航員和實施者之間完全沒有交流。
- 跳躍很大的人喜歡在代碼中進行大范圍的跳躍,這樣領航員不知道進行到哪里了。
[i] ???? 參見:http://www.cnblogs.com/ustc_msra_ase/archive/2010/11/28/1890424.html
[ii] ???? 參見:http://www.cnblogs.com/xinz/archive/2010/11/27/1889978.html
[iii] ??? 參見:http://c2.com/cgi/wiki?PairProgrammingCaseStudy 以及 http://www.thefreelibrary.com/Case+study%3a+using+pair+programming+in+development+of+a+complex+module.-a0246014267 以及 http://www.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf
其它論文:
??? Williams, Laurie, Robert Kessler, Ward Cunningham, and Ron Jeffries. 2000. “Strengthening the Case for Pair Programming.” IEEE Software 17, no. 4.
[iv] ??? 請看: http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator
[v] ??? 另外請參見 《對性格內向者的10個誤解》: http://blog.jobbole.com/12488/
[vi] ??? 參見:http://www.vaikan.com/the-conventions-we-follow/??? http://www.aqee.net/things-everyone-should-do-code-review/http://scientopia.org/blogs/goodmath/2011/07/14/stuff-everyone-should-do-part-2-coding-standards/?
[vii] ??? 參見:http://en.wikipedia.org/wiki/Broken_windows_theory
總結
以上是生活随笔為你收集整理的现代软件工程 第四章 【结对编程】练习与讨论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 质量码_在验证牛顿第二定律实验为什么要保
- 下一篇: 计算机网络教室任课教师登记表,多媒体教室