• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    OO世界里的幾個基本問題

    發布: 2007-5-25 11:48 | 作者: 晨光 | 來源: uml中國 | 查看: 31次 | 進入軟件測試論壇討論

    領測軟件測試網

    在軟件實踐中,當專注于某個具體場景下的設計時,我們當中的不少人,很少有時間顧及或者愿意顧及自己思維中更深層次的東西。而當結束設計之后,如果我們因為累日的操勞,想急于放松一下的話,那么等回過頭來,再試圖做些總結的時候,卻發現自己對那些具體實踐環節的印象已經變得模糊不清了。而這些細節卻很有可能是某個極有價值的思想的源泉。這就像是一個人匆匆忙忙走了一段路,然后停下來歇了一會兒,等他站起身來再回頭看時,卻已經忘了來時的路了。很遺憾,筆者也屬于這樣的人。本文試圖在做一些對“往事”的回憶,并希望能夠由此引發大家的思考。
     
    我們看到了什么?
     
      當我們站在高處眺望遠處的樓群時,也許我們無法看清這些高大建筑的每個細節,門窗的制式、所用的型材……,可是我們卻由此看清了它們的總體結構和趨勢。在一個OO系統里,亦是如此,當我們忽略具體細節,以同樣的目光審視這些OO世界里的建筑物時,我們看到了什么?我想,我們所看到的多半是一系列對象,以及介于這些對象之間的關系。
     
     
      在清楚認識了呈現在我們面前的總體結構和趨勢之后,后續問題便接踵而至。
     
    我們在做些什么?
     
      從上述觀點出發,我們的設計過程便等同于:

    勾畫各個對象自身,明確其責任;
    安排對象之間的關系,使其構成一個整體。

     
     
      在這個問題上,盡管有諸多方法,但無一例外的是,所有方法都在做著這件相同的事情。
     
     
      在明白了我們的行為所針對的對象和行為本身的含義之后,問題又產生了。
     
    我們的目標是什么?
     
      還有幾個相關的問題:如何評價我們的行為(即評價標準問題)?我們所做的是好是壞?要做到什么程度?如果我們將目標作為評價標準,那么這些問題事實上可以歸并為同一個。至于評價標準,在沒有完成設計之前,我們大可以對此提出苛刻的、近乎完美的目標,而且,有很多這樣的候選項可供選用。但是,正如Kent Beck所說的:
     
     
       “Program have two kinds of value:what they can do for you today and what they can do for you tomorrow.”
     
     
      諸多標準,最后可以分為兩類:正確完整地實現既定功能;保證能夠讓后續開發順利進行。當一個OO設計(也就是我們行為的結果),沒有實現現有的需求,勿庸置疑,那自然是失敗的,是一個不良設計。而在我們解決了“溫飽問題”之后,我們就有機會可以將眼光放得更長遠一些了,我們開始考慮如何使系統的結構更合理、更精巧;如何使之易于移植、易于復用;對于變化的需求,如何使之表現出更大的彈性;并開始考慮效率和成本的問題。理想狀況下,我們的思考順序是這樣的,即我們首先考慮第一類評價標準,然后再考慮第二類,兩者偶有交叉。但事實往往是,我們很容易會把這兩者混在一起,而且越是優秀的programmer,就越可能犯這樣的毛。ㄋ砸粋好的programmer,未必是一個好的designer)。
     
     
      行為的對象、行為本身、行為的目標都有了,似乎所有關于認識的問題都明確了,這就剩最后一個,也是最具吸引力、最值得探索的問題了。
     
    我們該如何去做?
     
      如果把這些論述和哲學做個類比,那么前面所講的大概屬于本體論范疇,而這里所提的應該屬于方法論范疇。有很多可以選用的方法,比較新的有:設計模式(Design Pattern),代碼重構(Refactoring)。還有一些傳統的面向對象設計方法,當然還有Quick and Dirty。對于不同的場景,目標的選。仍u價標準的選。┛赡苁怯袀戎氐,這就有了選擇不同方法的依據。某種方法并非在任何時候都是最適合的。它取決于你優先選用了諸多評價標準中的哪幾個。有時,這些標準往往是彼此矛盾的,所以你不得不在它們中間不斷的做折衷,尋求平衡點。最大的一對矛盾存在于上述兩類評價標準之間,另一對在某些場合下很常見的矛盾,則是“結構和效率”(比如面向嵌入式系統的應用)。
     
    小結
     
      在認識了上述四個基本問題之后,我們看到了一個存在于OO世界里的框架,一個自封閉的、邏輯上完整的概念框架。每個問題(環節)彼此互不重復,又前后相繼。在OO的世界里,每個“對象”(包括事物、概念、方法等等),都可以被歸并到上述某個環節中,它們之間彼此又有著邏輯上的關聯。每天,我們就是在這樣的一個框架里做著我們該做的事情。
     
     
      個人觀點,僅供參考。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>