在企業(yè)應(yīng)用中,那些無法理解的事情通常不是因?yàn)槠浔旧碛卸嗝磸?fù)雜,而是結(jié)構(gòu)上的混亂造成的?;靵y往往來自歷史遺留問題,來自決策中的妥協(xié),來自隱喻的忽視,來自種種人為的因素。在大連軟件開發(fā)實(shí)踐中,程序結(jié)構(gòu)的混亂太常見了。程序結(jié)構(gòu)對于項(xiàng)目的成敗有致命的影響。如果你正在抱怨無休止的加班、正在抱怨令人沮喪的延期交付,那么在絕大多數(shù)的情況下都是因?yàn)檫@個(gè)原因。最后,我想說,框架的確是一種約束。但是無論這種約束有多么嚴(yán)格,總是可以找到很多錯(cuò)誤的做法來讓約束失效。
大連軟件開發(fā)設(shè)計(jì)www.soft8.com.cn活動(dòng)具有兩個(gè)最主要的特點(diǎn),抽象和隱喻。抽象,是簡化信息、歸納特征、泛化概念的過程。隱喻,則是抽象的基本方式。在大連軟件開發(fā)實(shí)踐中,隱喻被廣泛地使用。但是,絕大多數(shù)的使用是本能的、不自覺的、混亂的。在我看來,隱喻應(yīng)該被作為一門學(xué)科或一項(xiàng)技能,它值得引起軟件設(shè)計(jì)人員高度的關(guān)注。 根據(jù)維基百科的解釋,隱喻是用于比較兩個(gè)看上去無關(guān)的事物,而人為制造的一種修辭轉(zhuǎn)義。通俗地說,就是用一個(gè)事物描述另一個(gè)事物。很明顯,隱喻的本質(zhì)就是想象。用一個(gè)事物描述另一個(gè)事物,這種轉(zhuǎn)換發(fā)生在人的主觀世界里。
設(shè)計(jì)模式是一種經(jīng)典的隱喻。GoF在Design Patterns:Elements of Reusable Object-Ori-ented Software一書中整理了23個(gè)設(shè)計(jì)模式,幾乎每一個(gè)設(shè)計(jì)模式都是建立在隱喻之上的。 例如,Observer(觀察者模式),有多個(gè)觀察者在關(guān)注一個(gè)目標(biāo),當(dāng)目標(biāo)發(fā)生變化時(shí),觀察者會(huì)得到通知,然后展開行動(dòng)。就這么簡單! 在模式實(shí)現(xiàn)的過程中,可以圍繞著這個(gè)觀察者的隱喻來深化故事細(xì)節(jié)。