敏捷設(shè)計(jì)(上)

滿足工程設(shè)計(jì)標(biāo)準(zhǔn)的唯一軟件文檔,就是源代碼清單。

一、軟件腐化

在軟件項(xiàng)目中最不穩(wěn)定的就是需求。需求處在一個(gè)持續(xù)變動(dòng)的狀態(tài)之中。這是我們作為開發(fā)人員必須接受的事實(shí)。我們生存在一個(gè)需求不斷變化的世界中,我們的工作是要保證我們的軟件能夠經(jīng)受的住那些變化。如果我們軟件的設(shè)計(jì)由于需求變化了而退化,那么我們就是不敏捷的。

畫外音:當(dāng)你進(jìn)行代碼編寫時(shí),覺得很代碼邏輯很復(fù)雜,停下來(lái),找找其他方向。當(dāng)面臨第一次需求添加時(shí),抓住這個(gè)機(jī)會(huì)改進(jìn)設(shè)計(jì),充分考慮到未來(lái)的可能變化,至少滿足當(dāng)前方向的所有新需求添加。

敏捷開發(fā)人員知道要做什么:

1、遵循敏捷實(shí)踐去發(fā)現(xiàn)問(wèn)題

2、應(yīng)用設(shè)計(jì)原則去診斷問(wèn)題

3、應(yīng)用適當(dāng)?shù)脑O(shè)計(jì)模式解決問(wèn)題

敏捷軟件開發(fā)致力于保持設(shè)計(jì)盡可能的適當(dāng)、干凈。這不是一個(gè)隨便的、暫時(shí)性的工作,這個(gè)是一個(gè)過(guò)程、一個(gè)持續(xù)的應(yīng)用原則、模式以及實(shí)踐來(lái)改進(jìn)軟件的結(jié)構(gòu)和可讀性的過(guò)程。每天、每時(shí)、每分鐘都要盡可能保持軟件干凈、簡(jiǎn)潔富有表現(xiàn)力。

二、單一職責(zé)原則

就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。

每一個(gè)類都有屬于自己的職責(zé),每一個(gè)職責(zé)都是變化的一個(gè)軸線。當(dāng)需求變化時(shí),該變化會(huì)反映為該類職責(zé)的變化。如果一個(gè)類承擔(dān)多個(gè)職責(zé),那么引起它變化的原因就有多個(gè)。職責(zé)的耦合,一個(gè)職責(zé)的變化可能會(huì)引起這個(gè)類完成其他職責(zé)的能力。

三、開發(fā)封閉原則

軟件實(shí)體應(yīng)該是可以擴(kuò)展的,但是不可修改的。

任何系統(tǒng)在其生命周期中都會(huì)發(fā)生變化,如果我們期望開發(fā)出的系統(tǒng)不會(huì)在第一版就被拋棄,需要牢牢記住這一點(diǎn)。

如果程序的一處改動(dòng)會(huì)引起連鎖反應(yīng),那么設(shè)計(jì)就是僵化的。如果正確應(yīng)用 OCP 原則,那么再進(jìn)行同樣的改動(dòng),只需要添加新的代碼,而不改動(dòng)已經(jīng)正常運(yùn)行的代碼。

特征:

1、對(duì)于擴(kuò)展是開放的

2、對(duì)于更改是封閉的

開發(fā)人員應(yīng)該僅僅對(duì)程序中呈現(xiàn)出頻繁變化的那些部分做出抽象。拒絕不成熟的抽象和抽象本身一樣重要。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容