在結對程式設計的task中,主要又分為了概念性認識和具體推行兩個子任務。這次主要還是單元測試理論性的一些基本認識吧。
結對程式設計就是兩位程式設計師坐在同一工作台前開發軟體。也就是說,
兩位程式設計師來完同乙個設計,乙個作為領航者在後邊說**怎麼寫,另乙個作為實施者寫**。
對專案:
(1)兩個程式設計師具有相同的缺點和盲點的可能性很小,所以當我們採用結對程式設計的時候會獲得乙個強大的解決 方案。人多力量大,人多點子多。(可能會出現過度討論,浪費時間;當然,也可能創新出更好的方案)(2
)如果程式設計師的經驗積累足夠,是很容易看出存在潛在問題的**的,即表面上實現了功能,但實際上是一種糟糕的做法。
(3更高質量的**,程式不那麼容易出
bug。(4
)一定時期內打亂配對。好處:促進交流,融洽關係;每個人更熟悉具體模組和整體專案;不再為人員流失而過度困擾;不再維護繁雜文件。
對程式設計師:
(
5)它可以促進參與專案的程式設計師自身水平的提高,一對程式設計師工作的時候,水平較低的一方會潛移默化地受水平略高的程式設計師影響,學到一些新的東西。而水平高的一方同樣因為不斷地把自己的想法說出來而整理了自己的思路。(6
)提高效率,尤其是遇到困難時,兩個人回去積極解決,而不是有時候的走神、跑偏、私人聊天等。真心是壓榨呀~(
7)更少的受到打斷。
人們更不願意打斷兩個結對程式設計的人,而單獨工作的人卻容易被打斷。
可能出現的問題:(1)、過度討論,浪費時間;(2)、水平高低不齊,效率低下;(3)、想法過多,思路「跑偏」;(4)、領航者:過度關注細節;一意孤行,默不作聲,心不在焉等;(
5)、實施者:深藏不露;目中無人;不知所措;思維跳躍;工具不熟悉等。
水平差的不太遠的程式設計師和自己配成一對;只用一台計算機;大家選乙個人坐在鍵盤前面負責輸入,另乙個人坐在後面口述(會不會造成乙個人不思考了?不會,因為乙個人停頓的時候另乙個人會主動的去繼續思考;會不會乙個人思路太快,另乙個跟不上?不會,因為第乙個人聽不懂他就寫不下去,會問)。
兩個人要不斷的交流,頻率不應低於一分鐘一次。整個的設計思想由後面只動口不動手的人主導,而由操鍵盤的人做實現。由於人的思維速度是快於輸入**的速度的。那麼**的人可以有空閒的時間做額外的思考,觀察**寫的有沒有問題,結構有沒有問題。
可以兩個人分時交替角色。
雖然編碼通常比乙個程式設計師單獨工作更快地完成,但是總的程式時間(程式設計師數目×
花費的時間)增加了。管理者需要在工作更快的完成以及縮減測試和除錯時間和更高的編碼成本之間平衡。對於那些程式設計師沒有完全理解的任務上,程式設計師期待更多的創造性,挑戰,以及高複雜度,此時使用結對程式設計最有幫助。在簡單的,程式設計師都完全了解的任務上,結對程式設計導致生產力的淨下降。
遠端結對程式設計,就是共享桌面,拓展硬體、解決地域限制;但不利於協作,比如有延時鍵盤控制混亂等、桌球結對程式設計,就是觀察者和駕駛者(操作者)測試用例的編寫和修改(了解即可)。
總結:對於結對程式設計還需要進一步的認識和**,這裡只是粗略的介紹。尤其是在專案中怎麼推行和解決推行過程中的問題,才是這個課題的重中之重。
從結對程式設計到結對工作
熟悉極限程式設計的人都知道,在極限程式設計的十二項實踐中,有乙個非常重要的實踐就是結對程式設計,也就是兩個人坐在同一臺電腦前面,使用相同的鍵盤和滑鼠來開發同樣的乙個模組,乙個負責 的鍵入,另外乙個人負責盯緊可能出現的錯誤,包括低階錯誤和方向性的錯誤。而且,當乙個問題對其中乙個人難以解決而恰好是另外乙...
從結對程式設計到結對工作
熟悉極限程式設計的人都知道,在極限程式設計的十二項實踐中,有乙個非常重要的實踐就是結對程式設計,也就是兩個人坐在同一臺電腦前面,使用相同的鍵盤和滑鼠來開發同樣的乙個模組,乙個負責 的鍵入,另外乙個人負責盯緊可能出現的錯誤,包括低階錯誤和方向性的錯誤。而且,當乙個問題對其中乙個人難以解決而恰好是另外乙...
結對程式設計理解
做呼叫中心監控系統的時候,跟專案經理兩個人結對程式設計。他負責寫 我負責回答所有他對系統中不理解 中的地方。我們兩個經常就某個功能實現的設計討論開來,我們互相發現對方設計方面的不足,最後統一乙個好的 設計方法。結對程式設計的那段時間,我統計了一下我們的開發效率是兩個人原來開發效率的130 提高了30...