熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

淺論設計

2013-11-23 19:33:53  來源: Java核心技術 

  本文是我和近來認識的高級程序員tony的談話內容整理而成Tony他對程序設計的認識足以使我無地自容Tony是個十分低調的人不為重用也沒什麼名氣(我想他也不看重名氣)設計好的程序是他最大的理想
  《淺論設計》
  nyra() & solotony ( )
  
  引言
    軟件的產生過程大概可分為計劃實現和維護三個部分實現過程主要有四個工作分析設計編碼測試本文主要討論設計工作的方法
  設計的前提
    分析需要(需求分析)是設計的前提它為設計工作提供了目標和基礎設計工作就是在分析產生
  的目標和基礎之前找到一條合理的路線假如目標和基礎都是明確的那設計工作實際上就沒有了任何
  意義好比你要找一本書如果你知道是什麼書(目標)又知道圖書館在哪裡(基礎)那麼設計工作
  就只變成了知識的組合(把有關於圖書檢索的知識組合起來)這時候設計工作就好比是中國的考試一樣
  無聊Tony說何不寫個應試程序呢?自動化的CASE工具可以幫助我們完成這些設計
    設計工作的挑戰在於分析不可能得出一個清晰明確的目標甚至不能知道現在的基礎是什麼樣的
  為別人設計程序時(一些大客戶)他們的要求通常三天一變這種變化是計劃所不能企及的也是對分析
  的否定同時也對設計的挑戰另外在很多情況下我們做為程序的實現人員都是無知的我們對手中
  的工具一知半解對自己的水平過於自信這些都很可能導致在分析的時候得出不正確的結果不能知道現在
  的基礎是什麼樣的我們必須認同分析中這種不確定性不能指望分析的結論是完美無缺的
  設計的理念
    沒有正確的設計理念
    每一種設計方法或思想都試圖證明它是正確的這種嘗試就像在證明兩條平行線永遠不相交一樣任何一種設計方法都是有效的但都有其局限性只在特定的情況下有效也不一定比其它的都好
  關鍵是我們是否認同它並把它當成公理來使用
    面向對象是我們的公理
    Tony和我達成了這種認同這是我們談話的基礎也是核心內容而這種認同基於以下的理由
    )OO(Object Oriented)更接近人的思維方式人思考問題時概念是最基本的單位這正是OO中對象所描述的
    )OOD(Object Oriented Design)有非常好的支持很熱門的東西總是有很多的支持者比如UMLC++等這使得OOD很容易容易做也容易實現(變成代碼)
    )最後也是最不成理由的是我們喜歡常用它習慣也許是最關鍵的因素
    面向對象的設計層次
    匯編語言也可以用做實現OOD的編碼工具但是它位於OO的最低層在為匯編語言所做的OOD中連最基本的對象概念都要明確說明OOD中由大到小可分為三個層次框架(framework)模式(pattern)和成語(idiom)它們從不同的抽象層次對設計的方法做出了說明
    )框架框架是一種成熟的設計思路它著眼於設計的內容即設計的主體部分框架為設計指明方向典型的框架有win下的MFC OWL OpenClass等它們通常很大無所不包使用框架可以明確設計的主體結構雖然大多數框架都有實用性的類比如MFC中CArchive類但它們只能做為框架描述的工具而不能做為應用的直接內容它們可以做為應用的實現基礎卻不能直接使用
   ) 模式模式是一系列類的組合方法它著眼於概念的組織即設計的枝節問題它可以把框架的描述類有效的組合起來產生類樹(群)典型的模式在Gof的書中有詳細的描述模式解決的是設計中如何走的問題它可能解決走哪一條叉路的問題也可能解決涉水還是搭橋的問題它不能解決向什麼方向走的問題(這由框架決定)不能解決走路還是坐車的問題(這由成語解決)它是設計工作中比較常用的抽象層次通常討論的設計問題都在這一層次上
    )成語成語是語言相關的它指某一種程序設計語言中實現某些功能的習慣方案它可以大到如何實現類小到循環變量是i還是conter成語的掌握程序通常說明了設計師對語言的功力好的設計師不應在面對訪問卻不能屬於(C++中的friendjava中的內嵌)這樣有點復雜的問題就束手無策
  設計的過程
    設計沒有結束也沒有開始廣義來說整個軟件開發過程都彌漫著設計的成份計劃或維護的任何想法都是設計的一部分或是影響設計的因素之一反復設計和持續設計是必要的也是不可避免的設計應保證自己的可擴展性設計的變化不應導致大量其它工作的無效簡單的說就是應盡量設計可復用的代碼減少專用代碼的比例但這一條規則卻不只針對代碼
  結語
    成功的設計來自於實踐卻不局限於實踐設計的思想(我們不說靈感因為靈感通常認為是神秘而不可琢磨的)來自於生活的
  各個方面只有真的熱愛並多方面的體驗生活才有多樣的思想
  
    
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/27103.html
    相關文章
      没有相关文章
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.