版本開(kāi)發(fā)復(fù)盤(pán)的一封郵件
我們的問(wèn)題:
1、測(cè)試:不知道開(kāi)發(fā)又改了啥,xx測(cè)試用例又測(cè)試不過(guò)了
2、我要改個(gè)接口。。。。。對(duì)應(yīng)的模塊:接口又改了
3、需求變一下,或者增加一個(gè)功能,或者之前一個(gè)地方?jīng)]有想好,然后很多地方都要改
一句話(huà)總結(jié)一下,改了一小點(diǎn)地方,系統(tǒng)崩潰了,牽一發(fā)而動(dòng)全身
Why?and?how?
之前我們開(kāi)發(fā)Oms,其實(shí)還是相對(duì)簡(jiǎn)單的產(chǎn)品,無(wú)所謂訂單 商品 庫(kù)存。
而分銷(xiāo)平臺(tái)的邏輯要復(fù)雜多了:分銷(xiāo)者?供貨商?訂單?商品?庫(kù)存?賬單 支付
我們?cè)儆弥伴_(kāi)發(fā)oms的方式顯然應(yīng)付不了分銷(xiāo)平臺(tái)了。之前我們開(kāi)發(fā)產(chǎn)品像搭積木,當(dāng)產(chǎn)品復(fù)雜到一定程度,純靠搭積木的方法已經(jīng)行不通了。隨便換一塊,或者動(dòng)動(dòng)位置,整個(gè)產(chǎn)品就會(huì)倒塌。而現(xiàn)在常見(jiàn)的大型建筑越來(lái)越來(lái)采用預(yù)制組合模塊,現(xiàn)場(chǎng)只需要拼接就行,開(kāi)發(fā)復(fù)雜軟件也是這樣。
怎么做?先說(shuō)原則
1、開(kāi)放封閉原則:
盡量通過(guò)擴(kuò)展軟件實(shí)體來(lái)解決需求變化,而不是通過(guò)修改已有的代碼來(lái)完成變化
開(kāi)閉原則是總綱,告訴我們要對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。
2、依賴(lài)倒置
高層模塊不應(yīng)該依賴(lài)底層模塊,底層也不該依賴(lài)高層,二者都該依賴(lài)其抽象;抽象不應(yīng)該依賴(lài)細(xì)節(jié);細(xì)節(jié)應(yīng)該依賴(lài)抽象;依賴(lài)倒置原則的本質(zhì)就是通過(guò)抽象(接口或抽象類(lèi))使個(gè)各類(lèi)或模塊的實(shí)現(xiàn)彼此獨(dú)立,互不影響,實(shí)現(xiàn)模塊間的松耦合。
3、接口最小
模塊之間的每個(gè)接口應(yīng)該只做一件事情。而且是最小的事情。
具體的辦法:
抽象、抽象再抽象,抽象業(yè)務(wù)。基于抽象定義接口。針對(duì)具體的編碼,最簡(jiǎn)單的套路就是設(shè)計(jì)模式。
策略模式、工廠(chǎng)模式是我們最常該用到的。