(一)敏捷開發與XP
敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。“敏捷流程”是一系列價值觀和方法論的集合。從2001年開始,一些軟件界的專家開始倡導“敏捷”的價值觀和流程,他們肯定了流行做法的價值,但是強調敏捷的做法更能帶來價值。
敏捷開發包括很多模式,其中,極限編程是一種全新而快捷的軟件開發方法。XP團隊使用現場客戶、特殊計劃方法和持續測試來提供快速的反饋和全面的交流:
XP是以開發符合客戶需要的軟件為目標而產生的一種方法論
XP是一種以實踐為基礎的軟件工程過程和思想
XP認為代碼質量的重要程度超出人們一般所認為的程度
XP特別適合于小型的有責任心的、自覺自勵的團隊開發需求不確定或者迅速變化的軟件
XP準則來表達:
溝通 :XP認為項目成員之間的溝通是項目成功的關鍵,并把溝通看作項目中間協調與合作的主要推動因素。
簡單 :XP假定未來不能可靠地預測,在現在考慮它從經濟上是不明智的,所以不應該過多考慮未來的問題而是應該集中力量解決燃眉之急。
反饋 :XP認為系統本身及其代碼是報告系統開發進度和狀態的可靠依據。系統開發狀態的反饋可以作為一種確定系統開發進度和決定系統下一步開發方向的手段。
勇氣:代表了XP認為人是軟件開發中最重要的一個方面的觀點。在一個軟件產品的開發中人的參與貫穿其整個生命周期,是人的勇氣來排除困境,讓團隊把局部的最優拋之腦后,達到更重大的目標。表明了XP對“人讓項目取得成功”的基本信任態度。
(二)編碼標準
編程標準使代碼更容易閱讀和理解,甚至可以保證其中的錯誤更少。編程標準包含:具有說明性的名字、清晰的表達式、直截了當的控制流、可讀的代碼和注釋,以及在追求這些內容時一致地使用某些規則和慣用法的重要性。
代碼標準中很重要的一項是如何給包、類、變量、方法等標識符命名,能很好的命名可以讓自己的代碼立馬上升一個檔次。Java中的一般的命名規則有:
要體現各自的含義
包、類、變量用名詞
方法名用動賓
包名全部小寫,如:io,awt
類名第一個字母要大寫,如:HelloWorldApp
變量名第一個字母要小寫,如:userName
方法名第一個字母要小寫:setName
(三)結對編程
結對編程是XP中的重要實踐。在結對編程模式下,一對程序員肩并肩、平等地、互補地進行開發工作。他們并排坐在一臺電腦前,面對同一個顯示器,使用同一個鍵盤、同一個鼠標一起工作。他們一起分析,一起設計,一起寫測試用例,一起編碼,一起做單元測試,一起做集成測試,一起寫文檔等。
結對編程中有兩個角色:
駕駛員(Driver)是控制鍵盤輸入的人。
領航員(Navigator)起到領航、提醒的作用。
如何結對編程,為何要結對編程,大家參考一下結對編程和兩人合作 ,重點是:
駕駛員:寫設計文檔,進行編碼和單元測試等XP開發流程。
領航員:審閱駕駛員的文檔、駕駛員對編碼等開發流程的執行;考慮單元測試的覆蓋率;思考是否需要和如何重構;幫助駕駛員解決具體的技術問題。
駕駛員和領航員不斷輪換角色,不要連續工作超過一小時,每工作一小時休息15分鐘。領航員要控制時間。
主動參與。任何一個任務都首先是兩個人的責任,也是所有人的責任。沒有“我的代碼”、“你的代碼”或“他/她的代碼”,只有“我們的代碼”。
只有水平上的差距,沒有級別上的差異。兩人結對,盡管可能大家的級別資歷不同,但不管在分析、設計或編碼上,雙方都擁有平等的決策權利。
(四)版本控制
XP的集體所有制意味著每個人都對所有的代碼負責;這一點,反過來又意味著每個人都可以更改代碼的任意部分。結對編程對這一實踐貢獻良多:借由在不同的結對中工作,所有的程序員都能看到完全的代碼。集體所有制的一個主要優勢是提升了開發程序的速度,因為一旦代碼中出現錯誤,任何程序員都能修正它。
這意味著代碼要放到一個大家都能方便獲取的地方,我們叫代碼倉庫。這引出另外一個話題叫版本控制(Version Control)。
實驗截圖: