關鍵字:
正方:當然當然,面向對象這鬼東西跟王菲的歌兒一樣,初聽時空靈、澄澈,誘惑力十足,聽多了卻發現它離我們凡人竟那么遙遠,簡直是遙不可及。你一定背過無數面向對象的名詞術語,你一定記過許多UML的圖示和標記,可無論你怎樣努力,當你面對實際的軟件開發項目時,你是不是有特別無助,不知道從何下手,或者腦子里一片空白,恨不得回到匯編時代的感覺呢?這是為什么?理論難以付諸實踐呀!
反方:錯!你的論辯從一開始就犯下了南轅北轍的毛病。我們今天要討論的是,程序員是否需要一本指導面向對象開發實踐的書籍,可你說了半天,都是在論證面向對象的理論要聯系實踐。理論當然要聯系實踐,但我們絕對不需要這么一本美其名曰“實踐指南”的破玩意兒!理論就是實踐的指南,理論就是一切,理論不需要任何多余的演繹!當程序員記熟了Jacobson等面向對象大師的理論之后,只要在實踐中不斷探索,不斷總結經驗,自然會找到正確的道路,自然會一天天走向成熟。
正方:老兄,你太天真了!你以為所有程序員都能像你一樣無師自通,舉一反三嗎?對大多數人來說,從茫然無知到滿腹經綸需要有書籍的導引,從一肚子墨水兒到一身絕活兒同樣需要書籍的導引——這就是“實踐指南”或類似書籍存在的價值!我給你舉個例子,初學面向對象,初學需求分析的人很容易記住用例分析的基本步驟,很容易掌握用例圖的繪制方法,但我見過許多剛學會用例分析的程序員在真正的項目里只畫了一、兩個用例圖就徹底對面向對象的需求分析失去了信心,然后立即投向了傳統的、粗放式的需求分析方法——整理(實際上是重復)用戶需求、編撰成文并開始設計。難道你不認為這是因為他們缺乏有效的引導和幫助嗎?如果有一本書告訴他們用例分析的理論如何應用,如何轉化成實際的需求分析結果,不就可以幫助他們重建對面向對象的信心了嗎?
反方:注意注意,你提到了用例分析。首先,我必須告訴你,用例分析不僅僅是一種局限于面向對象領域的需求分析方法,面向對象的需求分析技術也不僅僅包含用例分析這一種。其次,我必須通知你,你像古時候的宋國人那樣有揠苗助長的毛!就算有一些初學者在前幾個項目里無法體會用例分析技術的真正價值,就算有一些程序員在實際項目中將面向對象技術束之高閣,你也沒必要逼著他們去閱讀一本所謂的“指南”——沒有哪一本書可以讓菜鳥一夜之間成為高手!對真正的程序員來說,實踐本身就是最好的老師,就是最好的指南!當那些不愿或不敢使用面向對象技術的程序員在開發過程中不斷碰壁,不斷遭遇挫折后,他們自然會想到,要讓自己學過的理論真正發揮作用——這種認識一旦產生,他們就會一輩子受用不盡!
正方:我怎么又碰見了一位斷章取義的兄臺?我從來沒有說過用例分析只適用于面向對象的需求分析,我也從來沒說過面向對象的需求分析只有用例分析這華山一條路,你卻急著駁斥這根本不存在的“口誤”!反倒是你自己,說著說著就露餡兒了不是?你憑什么說“那些不愿或不敢使用面向對象技術的程序員”就一定會在開發過程中四處碰壁?面向對象只不過是有效的開發方法之一。許許多多使用結構化程序設計的程序員也能開發出優雅、高效的軟件。我所說的“實踐指南”只適用于那些選擇了面向對象技術的程序員。再跟你舉個例子,學過面向對象的人都知道OOA,都知道分析模型,但他們都能理解分析模型在軟件開發中的作用嗎?他們會不會在實踐中采用必要的手段,防止分析模型過于龐大或過于簡單呢?他們是否知道如何驗證分析模型的有效性呢?
反方:拜托,我也從沒說過不使用面向對象技術的人就一定會碰壁,但君子坦蕩蕩,我是不會跟你一般見識的。你還千萬別跟我提什么OOA,提什么分析模型,一提這個我就來氣。絕大多數人并不真正懂得OOA的含義,他們甚至無法說出OOA和OOD的本質區別。他們根本就不知道,關于提煉分析模型的方法,面向對象的理論界仍然存在相當多的爭論。OOA是面向對象技術里最容易把程序員引入歧途的概念之一,如果沒有一種規范的理論指引,初學者一會兒就會被各種相互矛盾的說法繞暈了。所以,學習OOA最重要的是從一而終,也就是堅持某一種理論,不要管其他的說法。一本經典的理論書籍必不可少,但你說的那個什么“實踐指南”,恐怕就有添亂的嫌疑了吧?
正方:請不要以你自己的狹隘經驗判斷你并不一定十分熟悉的世界!你怎么知道撰寫“實踐指南”的作者一定會給初學者增添學習負擔呢?這種指南性的書籍本身就是為經典理論書籍釋義明理的好幫手,你喝咖啡還要加點兒咖啡伴侶呢,為什么就不能在閱讀大師著作之余,在一本“實踐指南”的引導下提高自己吸收和轉化知識的能力呢?就拿架構設計來說,那么多一心想當架構設計師的程序員明知道要耐心學習各種架構設計方法,包括面向對象領域的組件架構、子系統架構、分層模型等架構技術,但他們一看見經典理論書籍上那些枯燥乏味的條條框框,就再也提不起精神了。這個時候,要是有一本“實踐指南”告訴他們:“別泄氣,架構設計并不是那么難。瞧,對于這么一個實際的案例,你只要如此這般,再如此這般,你的軟件就有了可以和Oracle、Apache或者Eclipse媲美的架構模型!薄窃撚卸嗪冒!
文章來源于領測軟件測試網 http://www.kjueaiud.com/