<!--[if !supportLists]-->2) <!--[endif]-->分階段實(shí)現(xiàn)/可持續(xù)性
1)足夠好(First Right & Good Enough)
所謂First Right & Good Enough是讓我們看看我們所作的設(shè)計(jì)是不是足夠清晰的架構(gòu)我們的系統(tǒng),而不是太過(guò)的復(fù)雜導(dǎo)致項(xiàng)目時(shí)間不足,往往好的設(shè)計(jì)并不是要花更多的時(shí)間實(shí)現(xiàn)的,通常只有Over Design才讓我們感到力不從心。所以我們發(fā)現(xiàn)設(shè)計(jì)導(dǎo)致實(shí)現(xiàn)的時(shí)間過(guò)長(zhǎng)的時(shí)候,我們需要看看,是不是我們想的太復(fù)雜了?
另外一方面,我們不提倡Over Design,避免Needless Complexity,但是還是要Good Enough & First Right,就是在看的到的需求范圍內(nèi),我們的設(shè)計(jì)要好,好的設(shè)計(jì)和不好的設(shè)計(jì),差別往往是在維護(hù)代碼和增加功能的時(shí)候才能夠看到,稍微花一些時(shí)間完成一些精妙的設(shè)計(jì),不僅是技術(shù),更是藝術(shù)美感的體現(xiàn),這個(gè)只有在未來(lái)才能夠體會(huì)到。
要注意的是Refactoring和First Right并沒(méi)有沖突,只有每次都是Right的比Wrong的更多,逐步的將Wrong的地方進(jìn)行Refactor,系統(tǒng)才能夠越做越好。否則系統(tǒng)的質(zhì)量就始終處于初級(jí)階段了。
2)分階段實(shí)現(xiàn)/可持續(xù)性
好的設(shè)計(jì)往往是Flexible的,是可以分階段實(shí)現(xiàn)的,很多設(shè)計(jì)的基本原則,比如面向接口編程,就是支撐“分階段實(shí)現(xiàn)”的一個(gè)很好的原則。當(dāng)我們定義的接口層次很清晰的時(shí)候,接口的具體實(shí)現(xiàn),是可以根據(jù)項(xiàng)目的時(shí)間點(diǎn),進(jìn)行控制的。項(xiàng)目時(shí)間比較緊的時(shí)候,可以做一些快速的實(shí)現(xiàn),然后在下一階段再Refactoring,如果對(duì)象之間是接口依賴而不是類依賴的話,下一階段的Refactoring也對(duì)系統(tǒng)已有功能影響也就非常的小,這個(gè)也是IOC核心價(jià)值所在了。
舉個(gè)例子,比如說(shuō)話單文件格式的靈活設(shè)計(jì),假設(shè)話單有好幾種格式,那么它的設(shè)計(jì)可以有幾個(gè)階段:
第一個(gè)階段是能夠在類這個(gè)層級(jí)易于維護(hù),先通過(guò)Template的設(shè)計(jì)模式定義一個(gè)話單父類后,不同的話單格式的子類實(shí)現(xiàn)父類的模板方法,如formatCDR(格式話話單記錄)即可,這種情況下,外部函數(shù)寫(xiě)話單的時(shí)候,只需要實(shí)例化相應(yīng)對(duì)象后,調(diào)用父類的接口就可以寫(xiě)出相應(yīng)的話單。而有新話單格式的時(shí)候,只要生成一個(gè)新的子類并實(shí)現(xiàn)相應(yīng)方法就可以了,可以看到這種設(shè)計(jì)是一個(gè)Good Enough的設(shè)計(jì)。
第二個(gè)階段是把類的可維護(hù)性提升到配置的可維護(hù)性,比如說(shuō)通過(guò)一種XML的方式來(lái)配置話單格式,使得系統(tǒng)的可維護(hù)性達(dá)到運(yùn)行時(shí)而不是編譯時(shí)。這個(gè)時(shí)候,還是在原來(lái)的基礎(chǔ)上,生成一個(gè)新的子類,這個(gè)子類在formatCDR的時(shí)候是從XML配置文件里面讀取配置后生成格式化數(shù)據(jù)的罷了,系統(tǒng)還是支持很多種默認(rèn)的CDR格式并且對(duì)于一些無(wú)法通過(guò)配置的CDR格式,還是可以通過(guò)子類繼承的方式來(lái)實(shí)現(xiàn)。
第三個(gè)階段是做一個(gè)很好的GUI來(lái)配置和管理話單XML配置文件了。
所以往往好的設(shè)計(jì)是可以逐步疊加并且完善的,象Spring的核心IOC就是為了設(shè)計(jì)模式而生的,很好的運(yùn)用這些技術(shù)和理念,是可以讓我們的設(shè)計(jì)具有更好的生命力和持續(xù)性,同時(shí)也平衡項(xiàng)目中的一些時(shí)間點(diǎn)。
結(jié)語(yǔ):無(wú)論如何,軟件的需求分析和設(shè)計(jì),都是一種藝術(shù),是要在我們不斷的開(kāi)發(fā)過(guò)程中去積累和提高的,要做到最好,所有的付出,都是值得的。
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來(lái)測(cè)測(cè)你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html