通常,我們把想不明白的事情,用這句話表達(dá),比如:前臺(tái)的MM怎么會(huì)看上那個(gè)小子???哎,蘿卜青菜,各有所愛啊!
我喜歡反過來看事情:為什么不管吃蘿卜還是青菜,都采用同一種端碗提筷子的手法,但是不同的人居然還各自找到各自的滿足?
讓我們帶著思考回到程序這個(gè)話題,程序是否可以滿足這樣的特性:總是那一套程序,但是在不同的場(chǎng)景下,由于吃的“數(shù)據(jù)”不同,表現(xiàn)出不同的“口味”,讓大家都滿意?
好吧,這貌似有點(diǎn)難,讓我們用一個(gè)小程序理理思路
1、你需要管理一批庫存材料,材料方面,我們簡(jiǎn)單起見,只有價(jià)格這一個(gè)屬性。
2、老板要求,需要知道所有材料價(jià)值多少,另外,單個(gè)材料大于100元的,屬于貴重材料,挑出明細(xì)列出來。
3、這難不倒你,三下五除二把程序做好了,運(yùn)行了幾天沒問題。老板卻說:我覺得大于500元也許才算貴重,你改改吧!
4、改個(gè)數(shù)字并不難,你修改了代碼程序繼續(xù)運(yùn)行。
5、。。。。。
哦, 稍等!讓我們停一停,這個(gè)敘述太過于常規(guī)、太流暢了,我們回到更為一般的角度再看看:也就是說老板下次改成1000元以上才算貴重,我們還得修改代碼,或 許你要說:我很擅長改這個(gè),木有問題!(我知道你只改個(gè)數(shù)字,當(dāng)然很自信!)但是永遠(yuǎn)不要忘了,我們極大的簡(jiǎn)化了問題,材料只有價(jià)格這唯一的屬性,真實(shí)的 情況下,邏輯和條件都會(huì)隨著考慮因素的加入而呈指數(shù)級(jí)增長!
如果這個(gè)時(shí)候,你想到的是設(shè)計(jì)模式,說明你還在徘徊!如果你想到了配置文件,可以說:你終于開始體會(huì)到一點(diǎn)點(diǎn)數(shù)據(jù)的好處了,有那么點(diǎn)意思了!讓我們繼續(xù):
1、增加了配置文件,把某個(gè)昂貴標(biāo)準(zhǔn),寫入了配置文件,每次老板說要改,修改一個(gè)xml就行了!
2、程序運(yùn)行了很久,老板是個(gè)變態(tài),期間讓你修改了好幾百回這個(gè)價(jià)格!
讓我們?cè)偻R煌?,這個(gè)敘述中,你發(fā)現(xiàn):配置文件雖然把數(shù)據(jù)獨(dú)立出來,卻并沒有解脫你,這很關(guān)鍵。
其實(shí)不是老板變態(tài),而是這個(gè)問題放到你身上,你也不能一次把價(jià)格定下來,因?yàn)榈彩莻€(gè)比較意義上的詞匯(比如這里的“貴重”),都是沒譜的!
我們需要從程序?qū)用嫱黄扑季S的障礙,那么障礙是什么呢?其實(shí),人總是認(rèn)為一個(gè)靜態(tài)的概念一定是靜態(tài)的!正如這里的貴重,它一直在變,誠然在具體的某個(gè)時(shí)間點(diǎn)上它是個(gè)數(shù)字,但是它真的一直在變(我反復(fù)強(qiáng)調(diào)它在變,你看到了么?)
來吧,我們繼續(xù)
1、在軟件上增加個(gè)人中心,讓老板自己填一個(gè)數(shù)字,他說多少算昂貴,它就是昂貴!
2、這解決了很多問題,甚至老板關(guān)心1000元以上的,主管關(guān)心500元以上的,組長關(guān)心100元以上的,它們各自獨(dú)立配置,各自得到自己想要的結(jié)果!
我 們總結(jié)一下,原來是程序里的代碼邏輯驅(qū)動(dòng)軟件,你寫100它就按100執(zhí)行(可不僅僅是篩選數(shù)據(jù)這么簡(jiǎn)單哦,也許還涉及到分支判斷,就能感受到一個(gè)數(shù)字的 大不同了!),但是現(xiàn)在呢?程序不變了,存儲(chǔ)了用戶和閥值之間的配對(duì)數(shù)據(jù),遇到什么樣的人,就按什么樣的數(shù)據(jù)驅(qū)動(dòng)軟件!
千萬不要覺得填寫個(gè)性化選項(xiàng)太正常了,要理解變化的產(chǎn)生是由于變化本身,變化的解決方案就是讓軟件自由變化,這種思想蔓延開來就能撥開云霧見青天!
稍等一下,我稍微深入的再啰嗦幾句。通常,我們的系統(tǒng)不會(huì)簡(jiǎn)單到只有價(jià)格這一個(gè)維度的,那么錯(cuò)綜復(fù)雜的數(shù)據(jù)和條件,老板怎么可能配置的過來?
還是那句話,人總是認(rèn)為一個(gè)靜態(tài)的概念一定是靜態(tài)的!正如這里的軟件,它一直在變,誠然在具體的某個(gè)時(shí)間點(diǎn)上它是具體存在的,但是它真的一直隨著數(shù)據(jù)而隨時(shí)隨地的變化。
1、可能剛開始時(shí)你沒有篩選出昂貴的功能,只有一個(gè)按價(jià)格倒序分頁的功能。
2、隨著老板的使用,你發(fā)現(xiàn)他只看到第3頁,而第3頁大約就是500元的標(biāo)準(zhǔn),于是,對(duì)他來說關(guān)心的“昂貴”就是500為標(biāo)準(zhǔn)。
3、隨著他的繼續(xù)使用,可能慢慢只看第一頁了,而第一頁是1000元的標(biāo)準(zhǔn),于是,整個(gè)程序?qū)λ麃碚f,很自然的切換到1000為標(biāo)準(zhǔn)。
4、這是一個(gè)從行為到數(shù)據(jù)積累,潛移默化的過程!千萬記住,軟件由數(shù)據(jù)驅(qū)動(dòng),數(shù)據(jù)無時(shí)無刻不在變化,軟件不是一個(gè)靜態(tài)的概念!
5、于是,無論數(shù)據(jù)多么復(fù)雜都是和整個(gè)系統(tǒng)相輔相成的,來的很自然,用的也會(huì)很自然!
最后,我想說一說類似“哲學(xué)”上的事情:任何事件的發(fā)生都是有原因的,一只小小的蝴蝶,可以引發(fā)蝴蝶效應(yīng)!所以,牢牢的把握住數(shù)據(jù),利用它們驅(qū)動(dòng)軟件,利用它們的變化提升軟件。因?yàn)闃I(yè)務(wù)的變化早就在數(shù)據(jù)上反應(yīng)出來,而軟件由數(shù)據(jù)驅(qū)動(dòng),你甚至根本不用修改軟件。
試試吧,又不會(huì)懷孕。
原文來自:互聯(lián)網(wǎng)的一些事