官术网_书友最值得收藏!

隱喻

隱喻(metaphore)是XP所有實踐中最難理解的。XP程序員骨子里都是實用主義者,隱喻這個缺乏具體定義的概念讓我們很不爽。的確,一些XP的支持者經常討論如何從XP的實踐中移除隱喻。然而,在某種意義上,隱喻卻是XP最重要的實踐之一。

想象一下智力拼圖玩具。你怎么知道把各個小塊拼到一起呢?顯然,每一塊都和其他塊相鄰,并且它的形狀必須與相鄰的塊完全吻合。假如你眼神不好但是觸覺靈敏,可以鍥而不舍地篩選每個小塊,不斷調整位置,最終也能拼出整張圖。

不過,還有一種比摸索形狀去拼圖更強大的,這就是整張拼圖的圖案。圖案是真正的向導。它的威力大到如果圖案中相鄰的兩塊無法吻合,你就可以斷定拼圖廠商的產品有問題。

這就是隱喻,它是整個系統聯結在一起的全景圖,它是系統的愿景,它讓所有獨立模塊的位置和形狀一目了然。如果模塊的形狀和整個系統的隱喻不符,就可以斷定這個模塊是錯的。

通常,隱喻是一個名稱系統,名稱提供了系統元素的詞匯表,它有助于定義元素之間的關系。

舉個例子,我做過一個系統,要求每秒60個字符把文本顯示到屏幕上。在這個速率下,鋪滿屏幕需要花一些時間。所以,我們寫了一個程序讓它生成文本并填充到一個緩沖區,當緩沖區滿了后,我們把程序從內存交換到磁盤上。當緩沖區一空,我們又把程序交換回內存繼續運行。

我們把這個系統說成自卸卡車托運垃圾。前面的緩沖區是小型卡車,顯示屏是垃圾場,我們的程序是垃圾生產者。這些名稱恰如其分,也有助于我們將這個系統當成一個整體來理解。

另一個例子,我做過一個分析網絡流量的系統。每隔30分鐘,它就會輪詢數十個網卡,從中抓取監控數據。每個網卡給我們提供一小塊由幾個獨立變量構成的數據,我們把這些小塊稱為“切片”,這些切片都是原始數據需要進一步分析。分析程序需要“烹飪”這些切片,所以我們把分析程序稱為“烤面包機”,把切片中的獨立變量稱為“面包屑”。總的來說,這個隱喻有用,也有趣。

當然,隱喻不只是一個名稱系統,隱喻還是系統的形象化表達。隱喻可以指導所有開發人員選擇合適的名稱,為函數選擇合適的位置,創建合適的新的類和方法,等等。

主站蜘蛛池模板: 英吉沙县| 海伦市| 台山市| 木兰县| 陆丰市| 和政县| 苏尼特右旗| 双柏县| 建宁县| 广宁县| 凤翔县| 岢岚县| 平邑县| 长沙市| 大悟县| 桑植县| 新化县| 鲁山县| 县级市| 黄龙县| 常宁市| 利津县| 大城县| 灵台县| 潞西市| 云和县| 祁连县| 莒南县| 潢川县| 阳原县| 商洛市| 灌南县| 永靖县| 浦江县| 北碚区| 瓮安县| 新邵县| 汉中市| 湟源县| 岱山县| 永春县|