極限程式設計(eXtreme Programming,簡稱XP)是一種輕量級、高效、低風險、柔性、可預測的、科學的軟體開發方法,其特性包含在12個最佳實踐中。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLzYjM48FO5ATMwYzNzMTMvwVMy8CX1AjMxAjMvw1ckF2bsBXdvwFdl5mLuR2cj5Set1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
1. 計劃遊戲 ( Planning Game )
(1)快速制定計劃、随着細節的不斷變化而完善;
(2)詳解:要求結合項目進展和技術情況,确定下一階段要開發與釋出的系統範圍。當計劃趕不上實際變化時就應更新計劃。
2. 小型釋出 ( Small Release )
(1)系統的設計要能夠盡可能早地傳遞;
(2)詳解:強調在非常短的周期内以遞增的方式釋出新版本,進而可以很容易地估計每個疊代周期的進度,便于控制工作量和風險;同時,也可以及時處理使用者的回報。
3. 系統隐喻( System Metaphor )
(1)找到合适的比喻傳達資訊;
(2)詳解:通過隐喻來描述系統如何運作、新的功能以何種方式加入到系統。它通常包含了一些可以參照和比較的類和設計模式。
4. 簡單設計( Simple Design )
(1)隻處理目前的需求使設計保持簡單;
(2)詳解:任何時候都應當将系統設計的盡可能簡單。不必要的複雜性一旦被發現就馬上去掉。
5. 測試驅動( Test-driven )
(1)先寫測試代碼再編寫程式;
(2)詳解:程式員不斷地編寫單元測試,在這些測試能夠準确無誤地運作的情況下開發才可以繼續。
6. 重構( Refactoring )
(1)重新審視需求和設計,重新明确地描述它們,以符合新的和現有的需求;
(2)詳解:代碼重構是指在不改變系統行為的前提下,重新調整、優化系統的内部結構以減少複雜性、消除備援、增加靈活性和提高性能。
7. 結對程式設計( Pair Programming )
(1)由兩個程式員在同一台電腦上共同編寫解決同一問題的代碼。
(2)詳解:通常一個人負責寫編碼,而另一個負責保證代碼的正确性與可讀性。
8. 集體所有權(Collective Ownership)
(1)任何人在任何時候都可以在系統中的任何位置更改任何代碼。
(2)詳解:每個成員都有更改代碼的權利,所有的人對于全部代碼負責。
9. 持續內建( Continuous Integration )
(1)可以按日甚至按小時為客戶提供可運作的版本;
(2)提倡在一天中內建系統多次,而且随着需求的改變,要不斷的進行回歸測試,避免了一次系統內建的惡夢。
10. 每周工作40小時 ( 40-hour Week )
(1)要求項目團隊人員每周工作時間不能超過40小時,加班不得連續超過兩周,否則反而會影響生産率。
11. 現場客戶( On-site Customer )
(1)在團隊中加入一位真正的、起作用的使用者,他将全職負責回答問題。
(2)詳解:要求至少有一名實際的客戶代表在整個項目開發周期在現場負責确定需求、回答團隊問題以及編寫功能驗收測試。
12. 編碼标準( Code Standards )
(1)強調通過指定嚴格的代碼規範來進行溝通,盡可能減少不必要的文檔。