瞭解敏捷開發
什麼是敏捷開發?
敏捷開發以使用者的需求變化為核心,採用迭代、循序漸進的方法進行軟體開發。
敏捷開發模式的分類
- XP極限程式設計(eXtreme Programming)
- SCRUM
- 水晶方法
- 動態系統開發方法
- 精益開發
其中XP和SCRUM最為流行。
極限程式設計
極限程式設計是一種輕量,高效,彈性的軟體開發方式。
四大核心價值觀
溝通:
完善的流程和詳細的文件用於團隊協作雖然能夠保證一致性,但效率往往不高。
極限程式設計提倡通過高效的口頭溝通來保證整個團隊的高效協作。(並不是捨棄流程和文件,只是更加側重口頭上的溝通)
簡單:
==今天夠用就行。
那麼系統的擴充套件性怎麼實現?
極限程式設計提倡重構。(對開發人員要求較高)
重構建立在軟體開發中無法避免出現BUG的前提下,與其最後修改整體的BUG,不如在一次次的重構迭代中反覆擴充套件優化。
反饋
通過提前編寫測試程式碼,經常性的反饋程式碼的問題和進展。
在開發過程中,通過持續整合,使得每一次的釋出都可以成為可執行版本。
勇氣
應用極限程式設計,每時每刻都在應對變化。這要求開發者時刻面對快速開發,重新開發。
變化在軟體開發中是不可避免的,極限程式設計的思想就是將變化扼殺在搖籃中,避免最後形成一個無法重構的龐大工程。
13個最佳實踐
計劃遊戲
快速制定一個概要的計劃,隨著專案細節的不斷更新和迭代,再完善這份計劃。
主要分為三個步驟:客戶編寫故事;開發人員進行按照優先順序進行分解和排序;確定產品迭代週期(2-3周)
小型釋出
持續整合,但每一個版本的釋出都需要具備足夠的商業價值。
隱喻
尋求共識
發明共享詞彙,增強團隊默契
簡單設計
設計不應該一次性完成。因為變化不可能被所有的預見。所有設計一次也是無法完成的。
扎克伯格:不變的事物只有變化
通過所有的測試程式
沒有任何重複的程式碼
保持定期重構的思想
單一職責(一個類只做一件事)
測試先行
先寫測試程式碼,再寫程式碼。(開始時效率低,但能解決許多隱形問題)
重構
重構是一種對程式碼改進而不影響功能實現的技術,重構的目的是降低變化引起的風險,使得程式碼優化更加容易。
重構場景:
- 實現功能之前:改變現有程式碼結構,使得新的特性更加容易實現
- 實現功能之後:檢查一下剛剛寫完的程式碼,考慮是否能夠簡化
理論上來說,重構思想和開閉原則是相違背的,但如果一開始沒有超強的設計分析和預測變化的能力,用來設計的時間不如花在重構上。【設計終究只能浮於紙上,而實踐才能更加真實的發現問題】
結對程式設計
code+review
集體程式碼所有制
編碼規範統一
持續整合
在確保系統執行的單元測試通過之後,每天儘可能的多做程式碼整合。
每週工作40小時
保證休息,提高效率。
現場客戶
主要為了溝通
編碼標準
定義變數名等開發規範。【確保溝通交流】
配合是關鍵
1+1>2