<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    沈豫龍 的blog

    抽象程度思考

    “軟件設計的重點在于抽象”,不記得這句話是哪位說的了,我想改正一下:“保證軟件靈活性設計的重點是抽象”,由此可知,抽象的作用是“保證軟件的靈活性設計”。越來越多的語言、平臺構建在OO思想之上,這充分說明了OO的正確性。OO,一種思想,一種談到軟件設計時必須涉及的思想,越來越多的人開始追捧它,當然,我也是其中之一。有了它,軟件設計可以提升到一個“美”的境界;有了它,軟件的可讀性、可維護性、靈活性、可擴展性等等一大堆的“性”得到了很大的提高。為什么會這樣?因為面向對象思想把軟件跟現實更緊密地聯系了起來,便得一些現實物理世界中的思想可以很容易的運用到軟件中去。這幾年,“設計模式”、“架構”等等一系列的名詞越來越受到人們的關注。所有這些東西,其實就是為了實現一個抽象層次的編程,以保證軟件的靈活性。

    那什么是抽象?引用一位網友的話:“抽象就是有選擇的忽略”,中國有句真理,叫“太極生兩儀,兩儀生四象,四象生八卦,八卦生萬物”。從太極到萬物,這種金字塔式的結構在復雜的軟件工程中也是存在的,越接近金字塔的頂端,越要有選擇的忽略掉更多的東西,從而具有更高的抽象程度。舉個例子,兩個功能A、B都是實現對數據的增刪改,A是針對“客戶”的,B是針對“產品”的,我們可以做一個增刪改服務或者容器之類的東西來支持所有的增刪改功能,A、B功能代碼只用對使用這些服務然后再實現一些各自特殊的東西就可以了。這樣做就把“增刪改邏輯”給抽象了出來。再比如說O/R映射工具,它其實就是把數據操作抽象了出來。“抽象”的反義詞應該是“具體”,我們可以把抽象理解為活的,具體理解為死的。各個具體的事物之間肯定會有重復,比如男人和女人都會走路,都會吃飯;比如你沒有使用O/R映射工具的數據層的各個類都要實現一些相同的邏輯。軟件設計中有一個原則:“Don't? Repeat”,就是不要重復。理想狀態下,一個系統的任何代碼、邏緝、概念在這個系統中都是唯一的,這樣的系統肯定是非常靈活,因為“抽象”對應“活”。唯一性很容易保證,但是邏緝、概念的唯一性就很難保證,應該說是根本保證不了,概念這東西抽象到最上層什么都沒有了。什么事情都有個度,只能說是軟件的靈活性會隨抽象程度的提高而提高。

    這么說,是不是就意味著抽象程度越高越好?不是!剛才說了,任何事物抽象到最上層就是叫“事物”,還從哪來軟件?一些書目中或明或暗地提到軟件設計肯定有個最好的抽象程度,而且我們應該去努力達到這個抽象程度。不錯,說得很對。但是,項目與項目之間是不同的,不存在適用于所有項目的最好抽象程度。 我的一個同事給我說過一句話:“軟件項目的成功標志是什么?有三點:客戶滿意,公司滿意,員工滿意”。客戶怎么滿意?軟件按照預算工期、成本完成,并為為他們創造價值;公司怎么滿意?軟件按照預算工期、成本完成,并為公司創造利益;員工怎么滿意?軟件按照預算工期、成本完成,開發過程順利,自已的利益得到保證。得到的結論就是軟件項目順利的按照預算工期、成本完成,就算是成功了。運用抽象的最終目的肯定是促使項目成功,并不是讓你搞“科研”。一個項目的所有因素決定了這個項目最好的抽象程度,項目經理、架構師需要反復思考,軟件設計時究竟抽象到什么程度最好?這肯定要根據現有的資源(開發人員、工具等)來確定,如果過于抽象,你水平到位,可以理解,那么下面的開發人員呢?你必須要考慮培訓成本、溝通成本,過于抽象,會延長工期,甚至讓項目遙遙無期。

    說了這么多,并沒有給出一套權衡的方法,在下實在水平有限,其實在自已帶領的項目中也并沒有把這些東西把握得很好,希望認真思考過這個問題的人能留下你的只言片語。

    posted on 2006-08-22 20:21 沈豫龍 閱讀(1558) 評論(6)  編輯  收藏

    評論

    # re: 抽象程度思考 2006-08-22 20:36 wy

    永遠支持你!----王鈺  回復  更多評論   

    # re: 抽象程度思考 2006-08-22 20:38 楊一

    設計模式是敏捷開發的工具,首先要快速的相應需求,當問題出現變化時,可以參考模式進行重構,隨需而變,一些框架可以“誘導”你通過接口調用,應用策略,模版方法一類的模式,以及測試驅動開發。從而減輕應用抽象模式帶來的副作用。如今的企業應用,我個人愚見,抽象起來變成了:WebSQL客戶端+工作流引擎。  回復  更多評論   

    # re: 抽象程度思考 2006-08-23 17:19 plexchina

    非常正確!!
    事實上,目前項目開發周期的延長不是因為技術上抽象的太少,而是過度。見過很多項目組以這種抽象為美,進入了誤區而不知覺。是一種可怕的現象。

    私自以為:
    項目中業務模型抽象的太少;
    技術抽象的太多。  回復  更多評論   

    # re: 抽象程度思考 2006-08-24 09:45 pear

    呵呵,我做項目有點感覺是在套設計模式,呵呵。真的不太理解真正的設計,懂的差不多就是套模式了。慚愧,慚愧。  回復  更多評論   

    # re: 抽象程度思考 2006-08-24 16:31 stonexu

    好的設計是節省工期的。當然,設計首先是要滿足用戶的需求。重用是為了后續項目的便利,更多是為了公司的長遠利益,適當犧牲當前項目的工期,也是值得的。就看怎么取舍啦。  回復  更多評論   

    # re: 抽象程度思考 2006-08-24 19:51 Rivarez

    現在做的設計,拼命的抽象。。。于是,忽略了顯示——工期。設計,感覺是在理想和現實中找一個合適的權衡點。所以,項目設計是不會有完美的時候。  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    我參與的團隊

    隨筆檔案

    搜索

    積分與排名

    最新評論

    • 1.?re: 抽象程度思考
    • 現在做的設計,拼命的抽象。。。于是,忽略了顯示——工期。設計,感覺是在理想和現實中找一個合適的權衡點。所以,項目設計是不會有完美的時候。
    • --Rivarez
    • 2.?re: 抽象程度思考
    • 好的設計是節省工期的。當然,設計首先是要滿足用戶的需求。重用是為了后續項目的便利,更多是為了公司的長遠利益,適當犧牲當前項目的工期,也是值得的。就看怎么取舍啦。
    • --stonexu
    • 3.?re: 項目修復-把有麻煩的項目帶向成功
    • 總結得不錯,管理就是管理人心,這種項目士氣是很重要得。
    • --stonexu
    • 4.?re: 抽象程度思考
    • 呵呵,我做項目有點感覺是在套設計模式,呵呵。真的不太理解真正的設計,懂的差不多就是套模式了。慚愧,慚愧。
    • --pear
    • 5.?re: 抽象程度思考
    • 評論內容較長,點擊標題查看
    • --plexchina

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 四虎亚洲国产成人久久精品| 免费看大黄高清网站视频在线| 亚洲精品成人在线| 亚洲精品V天堂中文字幕| 操美女视频免费网站| 亚洲 日韩 色 图网站| 国产免费av片在线看| 亚洲一区二区观看播放| 国产精品另类激情久久久免费| 亚洲av最新在线观看网址| 四虎1515hm免费国产| 一级片在线免费看| 国产V亚洲V天堂A无码| 99久久免费中文字幕精品| 亚洲狠狠ady亚洲精品大秀| a级毛片无码免费真人| 日韩国产欧美亚洲v片| 亚洲精品国产V片在线观看| 成人精品一区二区三区不卡免费看| 国产国拍亚洲精品mv在线观看 | 99免费在线视频| 亚洲国产成人精品不卡青青草原| 2021国产精品成人免费视频| 亚洲成熟丰满熟妇高潮XXXXX| 国产中文字幕免费观看| 久久久久久久国产免费看| 亚洲一区影音先锋色资源| av大片在线无码免费| 午夜亚洲国产理论片二级港台二级 | 亚洲最大的成人网站| 免费在线观看中文字幕| 男的把j放进女人下面视频免费| 亚洲最新在线视频| 波多野结衣免费视频观看| 国产午夜免费高清久久影院| 国产成人精品日本亚洲18图| 亚洲第一黄色网址| 18未年禁止免费观看| 美女黄频免费网站| 亚洲精品亚洲人成在线麻豆| 国产99视频精品免费视频7|