持續(xù)重構(gòu)
模型跟它所源自的領(lǐng)域緊密關(guān)聯(lián)了唯竹。代碼設(shè)計(jì)應(yīng)該圍繞模型展開,模型自身也會(huì)基于設(shè)計(jì)決定而有所增進(jìn)肯骇。脫離了模型的設(shè)計(jì)會(huì)導(dǎo)致軟件不能反映它所服務(wù)的領(lǐng)域,甚至可能得不到期望的行為祖很。建模如果得不到設(shè)計(jì)的反饋或者缺少了開發(fā)人員的參與笛丙,會(huì)導(dǎo)致必須實(shí)現(xiàn)模型的人很難理解它。
重構(gòu)是不改變應(yīng)用行為而重新設(shè)計(jì)代碼以讓它更好的過程假颇。重構(gòu)通常是非常謹(jǐn)慎的胚鸯,按照小幅且可控的步驟進(jìn)行,這樣我們就不會(huì)破壞功能或者引入某些 bug了笨鸡。
有時(shí)會(huì)對(duì)領(lǐng)域有新的理解姜钳,有些事物變得更清晰坦冠,或者兩個(gè)元素間的關(guān)系被發(fā)現(xiàn)。所有的這些會(huì)通過重構(gòu)被包括到設(shè)計(jì)中哥桥。
建模的第一件事是閱讀業(yè)務(wù)規(guī)范蓝牲,從中尋找名詞和動(dòng)詞。名詞被轉(zhuǎn)換成類泰讽,而動(dòng)詞則成為方法。這是一種簡(jiǎn)化昔期,將產(chǎn)生淺層次的模型已卸。所有的模型開始時(shí)都缺乏深度,但我們可以面向越來越深的理解來重構(gòu)模型硼一。一個(gè)忽略表面內(nèi)容且捕捉到本質(zhì)內(nèi)涵的模型是一個(gè)深層模型累澡。這會(huì)讓軟件更加和領(lǐng)域?qū)<业乃悸泛吓模哺軡M足用戶的需要般贼。我們會(huì)從一個(gè)粗糙的愧哟、浮淺的模型開始,然后基于對(duì)領(lǐng)域的深層理解以及對(duì)關(guān)注點(diǎn)的理解來細(xì)化它和設(shè)計(jì)哼蛆。我們會(huì)對(duì)它增進(jìn)新的概念和抽象蕊梧,然后執(zhí)行設(shè)計(jì)的重構(gòu)。每一次精化會(huì)讓設(shè)計(jì)更清晰腮介。這就建立好了突破的前提肥矢。為達(dá)到一次突破,我們需要讓隱式的概念顯式化叠洗。