編寫單元測試是一種驗證行為,更是一種設計行為。
測試時乙個無價的文件。如果你想知道如何呼叫乙個函式或者建立乙個物件,會有乙個測試展示給你看。
什麼是設計?不應該認為設計就是一組和**分離的uml圖。
一組uml圖也許描繪了設計的一些部分,但是它不是設計。(還是要**化)
僵化性是指難以對軟體進行改動,即使是簡單的改動。如果單一的改動會導致有依賴關係的模組的連鎖改動,那麼設計就是僵化的。
脆弱性是指在進行乙個改動時,程式的許多地方就可能出現問題。要修正這些問題就又會引出更多的問題。
牢固性是指設計中包含了其他系統有用的部分,但是要把這些部分從系統中分離出來所需要的努力和風險是巨大的。
晦澀性是指模組難以理解。**可以用清晰、富有表現力的方式編寫,或者可以用晦澀、費解的方式編寫。
在實現新需求是,團隊抓住這次機會去改進設計,以便設計對於將來的同類變化具有彈性,而不是設法去給設計打補丁。
單一職責原則,如果乙個類承擔了多於乙個的職責,那麼引起它變化的原因就會有多個。如果乙個類承擔的職責過多,就等於把這些職責耦合在了一起。
乙個職責的變化可能會削弱或抑制這個類完成其他職責的能力。
開放一封閉原則(ocp)
如果程式中的一處改動就會產生連鎖反應,導致一系列相關模組的改動,那麼設計就具有僵化性的臭味。
1.對於擴充套件是開放的。
2.對於更改是封閉的。
(抽象來實現)
建立正確的抽象是要花費開發時間和精力的,同時,那些抽象也增加了軟體設計的複雜性。
遵循這個原則可以帶來物件導向技術所聲稱的巨大好處(靈活性、可重用性以及可維護性)
對於應用程式中的每個部分都肆意地進行抽象不是乙個好主意。應該對程式中頻繁變化的那些部分做出抽象。拒絕不成熟的抽象和抽象本身一樣重要。
liskov替換原則
子型別必須能夠替換掉它們的基型別。如果新派生類的建立會導致我們改變基類,這就意味著設計是有缺陷的。也違反了ocp。
敏捷軟體開發
敏捷軟體開發 英語 agile software development 又稱敏捷開發,是一種從1990年代開始逐漸引起廣泛關注的一些新型軟體開發方法,是一種應對快速變化的需求的一種軟體開發能力。它們的具體名稱 理念 過程 術語都不盡相同,相對於 非敏捷 更強調程式設計師團隊與業務專家之間的緊密協作...
敏捷軟體開發
我們知道,傳統的開發模式已經不能不適用於現在情況,原因有很多 需求經常發生變化,軟硬體更新速度很快等,這些原因都使得傳統不管是 瀑布模型 還是 增量 不管是 快速原型 還是 螺旋 模型,這些軟體開發的模型,不在實用了。所以,在2001年,敏捷宣言提出,標誌著敏捷開發模型初步形成。那麼敏捷開發和傳統開...
敏捷軟體開發
隨著軟體規模的不斷擴大 軟體涉及的領域越來越廣,客戶對軟體要求也越來複雜,這一點的最直接的體現就是軟體需求的變化越來越頻繁。敏捷軟體開發正是為了應對這一問題而誕生的軟體工程學方法。它以適應性的過程代替傳統的 型的過程代替傳統的 性的過程,在很大程度上滿足了現代商業軟體業務複雜 需求多變 時間要求緊迫...