在部落格軟體工程首頁上看到了鄧永慶的一文,《Joel vs Bob, 敏捷其實很無聊》,讀後正和我現在的理解相近,實用才是最重要的。
我最近也一直在學習敏捷開發,買了《敏捷式軟體開發 (Agile Software Development) c#版》,才讀了不到1/5。還在webcast上下載了關於開發模式的教程看,也只看到不到5章的課程。其中講的東西第一遍看,基本是不知所云,第二遍看,若有所悟。第三遍看,還是若有所悟。所講的東西看是看明白了,也基本理解了其中的原委,但是具體怎麼用,一無所知。但我想這些方法必從軟體開發中所經常遇到的問題中抽象出來的方法,理解了這些方法後,在實際編程中,也許會不知不覺的應用到其中,也許應用了以後,才會想到,咦,這不就是某某某模式嗎?或者見到某個問題後,會想到,嗯,這個用那個什麼模式來解決剛剛好!
因為我也是才剛剛開始學習C#,學習OO,所以舉一個我實際工作中一個介面應用的例子,也許和敏捷開發關係不大,但我想理論就應該是這樣與實際結合的。
前一段時間,我學習C#時,對介面的理解一直不深,書上講的都基本看懂了,但總認為這個東西太抽象,工作中應該用不到,我還給我同事學,這個介面實際用處用大!結果沒過多長時間,遇到了一個問題:我需要做一個多資料來源之間的一個資料轉換,比如說從DBF表中匯入資料到SQL、從SQL中匯出資料到DBF和EXCEL。
我在想了好幾天,試了一兩種方法後,突然就想到,這個不是剛好可以用介面來實現嗎?定義一個資料轉換的介面,然後在MSSQL、DBF、EXCEL對應的類中來實現它,不是剛好適用這種情況嗎?於是就準備定義這個介面,結果寫來寫去卻發現寫不出一個準確的介面。
於是我先拋開介面不管,先寫一個DBF的轉換類出來。於是就寫下了這樣一個類,
有建立表的方法,擷取資料表,擷取表結構,儲存表等方法,還有表名等屬性,然後直接在代碼中選擇“提取介面”,OK,簡單打幾個勾就把我認為公用的部分提取成介面了。然後就是按這個介面逐個實現MSSQL、EXCEL類。一切都那麼自然,水到渠成。介面為這個:
所以我認為,學習很有必須,但千萬不能生搬硬套,只有認為剛好需要這個東西時,才可以用它,否則,用不如不用!