如何結對程式設計?

TP_funny發表於2014-09-19



結對程式設計技術是指兩位程式設計師肩並肩地坐在同一臺電腦前合作完成同一個設計、同一個演算法、同一段程式碼或同一組測試。一人充當“執行”角色,只負責程式設計。另外則負責“觀察者”(或“導航”),檢測bug和把控整體設計。
 
與兩位程式設計師各自獨立工作相比,結對程式設計往往只需花費大約一半的時間就能編寫出質量更高的程式碼。
 
步驟:
 
1
在開始任務之前,保持可以在兩個小時完成的良好心態。例如/程式碼新增“操作歷史”到搬運車資料庫,這會對你之後操作起來很有幫助。
 
2
每次的目標不要太大:比如幾分鐘內可以完成的。從互相鼓勵集中精神開始,確保你在任何時候都明確任務。
 
3
互相依靠和支援 
 
如果你是執行者,當以最快的速度完成了某個程式時,往往會忽略一些問題,在這個時候,搭檔就是保障。
 
如果你是觀察者,仔細審查對方的程式碼,考慮可能的錯誤,以及如何簡化和改進設計。在無法讀取的時候找出bug,但是不要即時就要求刪改,而是等到對方專注程式設計之後,進行到一個程度再整體調控會有效。例如,如果你看到現在的程式碼沒有考慮空輸入,在一張紙上寫下,“新增單元測試的零輸入。”
觀察者和執行者都是靈活互動的,而不是機械一成不變的完成任務即可。觀察者並不需要去研究小細節,但是要考慮更高的層次。例如“看起來不錯,但是如何處理遇到空指標的情況?”聽起來就比“好了,現在輸入'如果(S == NULL){返回......””好很多。
 
4
確實說了不少,最重要的是說到做到,研究更好的辦法解決問題、提高效率。包括程式碼可能沒有涉及到重點輸入;使顯示的變數和子程式更清晰;減少實現程式碼的繁雜步驟;時刻提醒對方API,當然傾聽也是必要的。當兩人搭檔很默契時,就會反覆快速討論。
以下是一些常見的對話: 
“你認為這是一個有效的測試?”
“這是否看起來是正確的嗎?”
“下一步是什麼?”
“相信我”(和顏悅色的商量如何更方便)。
 
5
保持雙方步調一致,一起工作難免出現不確定對方進行到哪一程度的情況發生,這是無法避免的。出現上述現象時,積極應對就可以了。最好的辦法就是好頻率互相協調,短時間確定是否同步,如果花費5分鐘或者更久,就和獨自工作沒什麼區別。
 
最好可以做之前明確工作。例如諮詢對方,“要我們為空案例編寫測試嗎”當然偶然也會被動的工作,那麼可以解釋例如:“需要輸入,但不知道是否可行”等,最好能保持這樣長時間的探索精神。
 
誰都知道一次性認可比不斷解釋重來簡單,但是為保證工作質量,編碼返工其實很正常。不管是誰掌握巨集觀方向,誰負責細節,最重要是配合默契高效完成工作。
 
6
花時間慶祝克服困難完成任務。例如,擊掌歡呼測試通過,當新測試失敗依舊擊掌明志時,便是進入協同程式設計和測試驅動設計的境界。
 
7
至少每半小時轉換角色,全力投入並適應不同級別的工作。此外,由於執行者的工作繁雜,需要警惕轉化角色之後無法勝任工作,所以切換角色有助於提升能力。
 
英文原文:http://www.wikihow.com/Pair-Program
來自:PHP100
相關閱讀
評論(2)

相關文章