XP基礎html
XP核心實踐java
相關工具git
(一)敏捷開發與XP程序員
軟件工程是把系統的、有序的、可量化的方法應用到軟件的開發、運營和維護上的過程。軟件工程包括下列領域:軟件需求分析、軟件設計、軟件構建、軟件測試和軟件維護。編程
敏捷開發(Agile Development)是一種以人爲核心、迭代、按部就班的開發方法。「敏捷流程」是一系列價值觀和方法論的集合。敏捷開發包括不少模式:安全
其中,極限編程(eXtreme Programming,XP)是是一種全新而快捷的軟件開發方法。XP團隊使用現場客戶、特殊計劃方法和持續測試來提供快速的反饋和全面的交流。服務器
XP是以開發符合客戶須要的軟件爲目標而產生的一種方法論;XP是一種以實踐爲基礎的軟件工程過程和思想;XP認爲代碼質量的重要程度超出人們通常所認爲的程度;XP特別適合於小型的有責任心的、自覺自勵的團隊開發需求不肯定或者迅速變化的軟件。工具
一項實踐在XP環境中成功使用的依據經過XP的法則呈現,包括:快速反饋、假設簡單性、遞增更改、提倡更改、優質工做。XP軟件開發的基石是XP的活動,包括:編碼、測試、傾聽、設計。單元測試
(二)編碼標準測試
編程標準使代碼更容易閱讀和理解,甚至能夠保證其中的錯誤更少。編程標準包含:具備說明性的名字、清晰的表達式、直截了當的控制流、可讀的代碼和註釋,以及在追求這些內容時一致地使用某些規則和慣用法的重要性。程序的版式追求清晰、美觀,是程序風格的重要因素。
程序沒有最基本的縮進,讓人讀起來很費勁,這個問題在Eclipse中比較容易解決,咱們單擊Eclipse菜單中的source->Format 或用快捷鍵Ctrl+Shift+F就能夠按Eclipse規定的規範縮進。代碼標準中很重要的一項是如何給包、類、變量、方法等標識符命名,能很好的命名可讓本身的代碼立立刻升一個檔次。Java中的通常的命名規則有:
標識符名字應當直觀且能夠拼讀,可望文知意,沒必要進行「解碼」,通常採用英文單詞或其組合,便於記憶和閱讀。
代碼標準:
(三)結對編程
結對編程是XP中的重要實踐。在結對編程模式下,一對程序員肩並肩、平等地、互補地進行開發工做。
結對編程中有兩個角色:
駕駛員(Driver)是控制鍵盤輸入的人。寫設計文檔,進行編碼和單元測試等XP開發流程。
領航員(Navigator)起到領航、提醒的做用。審閱駕駛員的文檔、駕駛員對編碼等開發流程的執行;考慮單元測試的覆蓋率;思考是否須要和如何重構;幫助駕駛員解決具體的技術問題。
駕駛員和領航員不斷輪換角色,不要連續工做超過一小時。領航員要控制時間。任何一個任務都首先是兩我的的責任,也是全部人的責任。兩人結對,儘管可能你們的級別資歷不一樣,但無論在分析、設計或編碼上,雙方都擁有平等的決策權利。
(四)版本控制
XP的集體全部制意味着每一個人都對全部的代碼負責;這一點,反過來又意味着每一個人均可以更改代碼的任意部分。
版本控制(Version Control)的好處:
版本控制也是項目級的時間機器,你能夠選擇任何一個時間, 精確地查看項目在當時的狀況。
流行的版本控制工具備CVS,SVN,Git等,Git是Linus除了Linux操做系統外的另一個重要發明。
git命令上傳代碼:
$ cd /home/shiyanlou/Code/shiyanlou_cs212 # 修改代碼文件 # 添加修改文件 $ git add 全部修改的文件 # 提交到環境中本地代碼倉庫 $ git commit -m '本次修改的描述' # push到git.shiyanlou.com,無需輸入密碼 $ git push
下面給出一個HelloWorld的例子:
1.首先進入工做目錄,建立一個新的項目,編譯運行經過後上傳新建代碼。值得注意的是,往代碼庫提交的代碼必定編譯、運行、測試都沒有問題的代碼。
2.咱們能夠先用git status查看一下代碼狀態,顯示有未跟蹤的代碼,並建議用git add
注意:HelloWorld.class是不該該保存在代碼庫中的,咱們只要有HelloWorld.java就行。
運行過程以下圖所示:
在碼雲上的運行結果以下所示:
(五)重構
重構(Refactor),就是在不改變軟件外部行爲的基礎上,改變軟件內部的結構,使其更加易於閱讀、易於維護和易於變動 。重構中一個很是關鍵的前提就是「不改變軟件外部行爲」,它保證了咱們在重構原有系統的同時,不會爲原系統帶來新的BUG,以確保重構的安全。
下面以Eclipse這個IDE的重構爲例:
1.重構的第一項功能就是Rename,能夠給類、包、方法、變量更名字。修改方法是,用鼠標單擊要改的名字,選擇Eclipse中菜單中的Refactor->Rename,具體以下所示:
2.重構的下一項功能爲封裝,例若有個學生類,有姓名、年齡和編號三個屬性,下面要對姓名屬性進行封裝,進行Refactor->Encapsulate Field操做。該操做修改了屬性的修飾符,增長了屬性的get和set方法,並修改了調用方法,具體以下所示:
另外,每次打印學生信息都這麼寫代碼違反了DRY原則,形成代碼重複。方法一能夠可使用Eclipse中的Extract Method來建立一個toString()方法,另外一個是使用Eclipse中Source->Generate toString()來產生一個toString()方法用於打印,結果以下所示:
一個完整的重構流程包括:
(六)實踐項目
1.結對夥伴:http://www.cnblogs.com/lxy1997/p/6820928.html
2.任務很簡單,兩人用git來下載已完成項目代碼,並下載到本地,修改完成後經過git上傳到服務器中,這些在上面的內容中已經展現完成。
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 40min | 18.2% |
設 計 | 50min | 22.7% |
代碼實現 | 60min | 27.3% |
測 試 | 30min | 13.6% |
分析總結 | 40min | 18.2% |