l

2012年2月14日 星期二

各位鄉民們,工作上有用到Design Patterns嗎?

February 13 21:26~21:48

最近因故Teddy又花了點時間把GoF的Design Patterns這本書仔細再讀一次。上次很認真讀這本書大約是1998年前後的事了,那時候無意中買了這本書,覺得寫得很好,對物件導向軟體設計很有幫助,所以就利用使用Java語言開發一個網路及時連線進銷存系統的機會,卯起來用了這本書裡面十幾個patterns。之後花了點時間做了幾個patterns的投影片,利用公司教育訓練的機會跟同事們介紹這些patterns。當時Teddy對這些patterns並非全然了解,有些認知更僅止於書中「字面上的解釋」,對其字面之後的涵義只是略知一二而已。

這麼多年過去了,這十幾個patterns都不知道用過多少輪了,pattern languages理論也研究了好幾年,這次回頭再看這本書,總算有一些比較深刻的體驗。

書看著、看著,突然想要做個問卷調查,想請問鄉民們幾個問題:

  1. 從事軟體這一行有多少年的經驗?
  2. 平常在工作中,會經常在專案中使用design patterns嗎?
  3. 為什麼(用或不用的原因)?
  4. 曾經用過大約多少個不同的GoF design patterns?
  5. 在學校中是否有學過design patterns?
  6. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
  7. 如果你有用過design patterns,你會介紹同事使用嗎?
  8. 對於design patterns的看法或是意見。

平常都是Teddy在寫,這次就麻煩熱心的鄉民們留個言回答一下吧,請留言於部落格討論區或是Facebook,感恩。

***

友藏內心獨白:還是有很多人認為design patterns沒什麼用…XD。

14 則留言:

  1. 超菜菜鳥回覆...

    1. 從事軟體這一行有多少年的經驗?
    目前將近一年
    2. 平常在工作中,會經常在專案中使用design patterns嗎?為什麼(用或不用的原因)?
    一開始只是單純想把物件導向的概念套到專案裡(公司其它人不會套...),後來自修了幾套design patterns以後有試著套用進來。用在對的物件關係下,呈現出來的效果真的不錯!
    3. 曾經用過大約多少個不同的GoF design patterns?
    三、五個而已吧.....
    目前的專案,會用到的也就獨體模式、策略模式和簡單工廠而已。
    4. 在學校中是否有學過design patterns?
    完全沒有。
    自己在尋找物件導向的設計技術時才發現有這種學問。
    5. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
    自己看書學:歐萊禮的那本"深入淺出設計模式"
    6. 如果你有用過design patterns,你會介紹同事使用嗎?
    會,但是不抱持期望。
    就算我心裡覺得那是好東西,同事不接受新的東西我也拿他們沒輒。(都是一副怕麻煩的嘴臉...)
    7. 對於design patterns的看法或是意見。
    還沒學完,還在看書學習....
    Design patterns我認為它是一套心經,修完了對自身的武功有絕對性的幫助。

    回覆刪除
  2. To 狼.漠仇:

    恭喜你搶得頭香,但希望不是唯一的一柱香...Orz。你的第6點回答『會,但是不抱持期望。就算我心裡覺得那是好東西,同事不接受新的東西我也拿他們沒輒。(都是一副怕麻煩的嘴臉...)』,覺得很耳熟...難道很多公司都有類似的狀況?

    其他鄉民不要再只是圍觀了,趕快跳下來打群架吧...XD。

    回覆刪除
  3. →從事軟體這一行有多少年的經驗?
    坦白說,我不知道我到底有沒有進入軟體業。如果說幫人家寫程式就算的話,大概也快十年了。

    →平常在工作中,會經常在專案中使用design patterns嗎?
    似乎有

    →為什麼(用或不用的原因)?
    不知不覺就用了,應該說,用了也不知道 [無誤]

    →曾經用過大約多少個不同的GoF design patterns?
    不確定,MVC 算 pattern 嗎? 問題是 V 跟 C 我老是切不開。現在 GWT 都在說 MVP,但是實在沒時間去導入。不懂 Singleton 為甚麼也算 pattern... 如此之類這樣那般...... Orz

    →在學校中是否有學過design patterns?
    理論上沒有,在學校的時候,design pattern 的書好像才出來沒多久,最多只提了 MVC 之類的

    →在那裡學的design patterns(學校、自學、工作上、外面上課)?
    之前有「翻」過幾本書,GoF 也曾經幹來一本(又被幹走了),在某個個人工作室老闆有要另一個同事報告 design pattern,聽了一兩個,聽不太懂......

    →如果你有用過design patterns,你會介紹同事使用嗎?
    理論上會吧... 問題是我啥都不知道... Orz

    曾經發生過同事跟我說「你寫的 xxx 就是 ooo pattern」
    「喔... 是這樣喔,那 yyy 咧?[疑惑貌]」
    「那個是 zzz pattern 啊... 吼,你到底有沒有在聽...」
    「報告是...」

    是說我現在也沒啥同事.......

    →對於design patterns的看法或是意見。
    我不太認真,所以搞不懂 UML(跟 UML or Java 比起來,我比較想練好中文)、連帶看 design pattern 也受阻礙。

    我只是想把程式寫的很 OO 一點(或說很 Java 一點),期望未來的自己不會想要回到過去殺了自己(什麼鬼)。

    到底有什麼 pattern、用了哪些 pattern、能用什麼 pattern 我的智商可能沒辦法 handle。只能說,我認為 design pattern 是個好東西、我很羨慕那些能看得懂這種理論、並且還能拿來實用的人。對我自己來說,可能多寫兩行 code、多看幾行人家寫的 code 比較實在...... [淚目]

    報告完畢......

    回覆刪除
  4. 7. 個人認為學 Patterns 其實是一個讓自己精進的一個方式,閱讀這些被整理過的東西,去思考背後設計的原理以及欲解決的問題,其實都有機會讓自己對於軟體設計更有想法。

    不需要為了套patterns而學patterns,但研讀過後如果能變為內功的話,保證在程式撰寫及維護上,會減少自己未來的很多麻煩。(出來跑,總是要還的.....)

    回覆刪除
  5. 1. 從事軟體這一行有多少年的經驗?
    曾經兩年。
    2. 平常在工作中,會經常在專案中使用design patterns嗎?為什麼(用或不用的原因)?
    第一年沒用過,因為不是寫物件導向的程式。第二年有用到,不是只是維護前人寫的程式(算是沾個邊吧)。
    3. 曾經用過大約多少個不同的GoF design patterns?
    作業上用了很多。
    4. 在學校中是否有學過design patterns?
    有阿,所以才說作業上用很多。
    5. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
    工作的時候,跟學長偷學了兩個Pattern,其他都是學校老師教的。
    6. 如果你有用過design patterns,你會介紹同事使用嗎?
    看緣分。
    7. 對於design patterns的看法或是意見。
    無招勝有招。(要融會貫通,不要為了套用Pattern而套用Pattern)

    回覆刪除
  6. 1.7+年
    2.用,單純為了解決問題
    3.5-10個
    4.沒有
    5.自學
    6.不敢,怕誤導人家, haha!
    7.能站在巨人的肩膀上總是好的,但要能完全領會也不容易

    回覆刪除
  7. 1.三年
    2.會用,但不是經常。因為開發新專案少,維護舊專案多。多數時候設計出來的是某幾個pattern的變體或是與某幾個pattern有共通概念的設計。舊專案則是沒有足夠的測試做保護,除非原始設計還不錯,不然只敢做些低階重構,讓物件傳達概念清楚一點就好。
    3.實務上用過六、七個吧。
    4.沒有,電子工程系的軟體課程是很少的。
    5.跟同事組的讀書會與自學。
    6.會介紹,但用不用不是我能強求滴~~
    7.同上面網友們的心得,少套招,多想、多實作、多討論與分享,積真力,久則入。

    回覆刪除
  8. 1. 從事軟體這一行有多少年的經驗?
    從民國88年到現在

    2. 平常在工作中,會經常在專案中使用design patterns嗎?
    會,目前已經變成習慣了

    3. 為什麼(用或不用的原因)?
    因為所有做過的專案未來都有變化的可能性,經過了不少慘痛的教訓之後,事前準備比起事後後悔來的舒服多了

    4. 曾經用過大約多少個不同的GoF design patterns?
    目前 GoF 的基本模式大概 2/3 都用過,當然常用的還是幾個重要的,如 Factory, Template Method, Strategy 等。
    其他像是 Multi-Thread 用的 Patters 或其他用在不同狀況的 Patterns 也都會視情況使用

    5. 在學校中是否有學過design patterns?
    沒~在我那個年代還沒這種玩意

    6. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
    自學
    7. 如果你有用過design patterns,你會介紹同事使用嗎?
    對於design patterns的看法或是意見。

    會,但是我發現若只有用說明的方式,大多數人不懂:『為什麼要把程式寫這麼複雜?』
    大多數的經驗是,要先做過一遍,用實際案例去帶才比較有效果

    回覆刪除
  9. 感謝以上鄉民的熱情回答,其他沒出聲的鄉民也歡迎讓大家知道一下自己的想法,謝謝。

    回覆刪除
  10. 1. 從事軟體這一行有多少年的經驗?
    15年
    2. 平常在工作中,會經常在專案中使用design patterns嗎?
    不常用
    3. 為什麼(用或不用的原因)?
    用,單純為了解決問題
    4. 曾經用過大約多少個不同的GoF design patterns?
    singletone我常用
    5. 在學校中是否有學過design patterns?
    沒有
    6. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
    自學
    7. 如果你有用過design patterns,你會介紹同事使用嗎?

    8. 對於design patterns的看法或是意見。
    他是別人設計好的,只要換一下參數,可以再利用的方法。

    回覆刪除
  11. 1. 從事軟體這一行有多少年的經驗?

    十年...

    2. 平常在工作中,會經常在專案中使用design patterns嗎?

    似乎有,似乎沒有

    3. 為什麼(用或不用的原因)?

    看程式規模... 盡量靠攏,但不會特意去做

    4. 曾經用過大約多少個不同的GoF design patterns?

    六七個吧...

    5. 在學校中是否有學過design patterns?
    在那裡學的design patterns(學校、自學、工作上、外面上課)?

    畢業時還沒這本書。

    6. 如果你有用過design patterns,你會介紹同事使用嗎?

    因工作特性維護案較多,雖然有準備相關的書籍在辦公室,但平時用不到也就不強求了。不過有要求看重構。

    回覆刪除
  12. 1.三年
    2.有,經常要show一些很炫又能讓維護擴展更簡單的設計方給客戶看。(才會乖乖掏錢買code)
    3.建造者,裝飾,命令,策略,套版,原型,觀察者,事件驅動,最近都比較偏向ajax上的設計模式...
    4.沒有= = 我剛畢業出來的時候還被老大說你的寫java怎不用DP,怎不用MVC
    5.看書
    6.會,但反應很兩極化,喜歡的人通常都已經會了,光6大原則每個人的詮釋方式就不太一樣。
    7.如果說信耶穌要讀聖經,那麼寫java你就要讀DP...

    回覆刪除
  13. 1. 從事軟體這一行有多少年的經驗?
    3~4年

    2. 平常在工作中,會經常在專案中使用design patterns嗎?
    並不算常用。

    3. 為什麼(用或不用的原因)?
    除非程式複雜到某種程度,用了會對架構有明顯好處時才會用。

    4. 曾經用過大約多少個不同的GoF design patterns?
    Factory method, Strategy, State, Proxy

    5. 在學校中是否有學過design patterns?
    曾經上過一門課叫進階物件導向,裏頭有講。

    6. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
    主要還是自己看深入淺出設計模式學會的。

    7. 如果你有用過design patterns,你會介紹同事使用嗎?
    不會主動提,而是恰巧需要用到的時候告訴他們。

    8. 對於design patterns的看法或是意見。
    可以學習何謂好的物件導向程式。

    回覆刪除
  14. 1. 從事軟體這一行有多少年的經驗?
    10年
    2. 平常在工作中,會經常在專案中使用design patterns嗎?
    能用會用有機會就用;可惜機會不太多。
    3. 為什麼(用或不用的原因)?
    3.1 不會
    3.2 做的大部份是維護案。需求大都是base on 原有的程式碼。全新功能專案不太多。
    4. 曾經用過大約多少個不同的GoF design patterns?
    大概5-6個而已吧
    5. 在學校中是否有學過design patterns?
    沒有
    6. 在那裡學的design patterns(學校、自學、工作上、外面上課)?
    自學
    7. 如果你有用過design patterns,你會介紹同事使用嗎?
    雖然沒什麼同事可以介紹,但如果有的話,應該是會儘量吧!只是這種東西真的很講天份(不是指智商,只是真的很多東西原本講了半天都不懂,就那麼有一天在一棵(菩提)樹下坐著休息的時候,就忽然懂了)
    8. 對於design patterns的看法或是意見。
    人人都要看,雖然真的不太容易懂。

    回覆刪除