編程工作的組織--llorch的Visual Studio 基礎教程(一)

來源:互聯網
上載者:User

標籤:

 通用的樣本說明:
  • 本系列部落格只討論工具的基礎,不討論任何語言。
    • 甚至不討論快速鍵:-)
    • 可以用滑鼠就完成本教程
  • IDE預設指代的是Visual Studio 2013 Community Edition。 本系列文章的結尾,你可以熟練地使用它寫程式。
  • 將Visual Studio啟動後的預設布局狀態稱為主視窗,主視窗標題列中顯示的項目名稱不必要。
  • 在日常口語和Windows資源管理員的基礎上定義了幾個描述菜單操作的符號:[]、{}、/、>>、=、(,)。
  • 檢查一個設定項的表示方法為:
    • [視窗名稱]/{菜單名稱}/{子功能表名稱}/{設定項項名稱}=設定項的值
  • 例如預設的Debug配置:
    • [主視窗]/{解決方案組態管理員}=Debug
  • 檢查多個設定項時,按照單個設定項的方式,逐一寫出
  • 檢查一個設定項有多個值的時候,用括弧包括並用內部的逗號分隔,如:
    • [方案總管]/{項目名稱}/{引用}=(System,System.Core,System.Data,System.Xml)
  • 執行一個左鍵單擊序列,就是將最後的檢查項換成”/”,例如退出IDE:
    • [主視窗]/{檔案}/{退出}/
  • 右鍵菜單的串連符號為>>,例如重新整理Windows案頭:
    • [案頭]>>{重新整理}/
  • 快顯視窗中的設定項的表示與上類似
  • MDI子視窗中設定項的表示與上類似,注意到在Visual Studio中,MDI子視窗的名稱在它的左上方或者可能自動吸附到主視窗的四周
  • 標題列和狀態列作為菜單的推廣,適用於上述表示方法
  • 缺陷說明
    • 歡迎反饋,mailto:[email protected]
    • 作者的慣用語言是C#
    • 作者是軟狗
    • 作者的IDE沒裝中文語言套件,所以有的名詞翻譯得不準確:-(
    • 由於還沒有釐清相關的認證問題,著作權保留
    • 系列文章沒有提出或解決新的問題,目的只是科普

 

 

本文

在Visual Studio(以下簡稱IDE)當中,存在兩個很微妙的專用名詞”項目(project)”和”解決方案(solution)”。這兩個概念對於我們組織工作有怎樣的啟示呢?

 

首先,從 目錄結構的特點來認識Visual Studio。

當我們以空白環境啟動IDE後,通過

[主視窗]/{檔案}/{建立}/{項目}/,可以呼出[建立項目]視窗。

在[建立項目]視窗中任意選擇一個項目模板,由於預設有

[建立項目]/{解決方案}=建立新的解決方案,

因此在完成建立項目後,在[方案總管]中出現了一個解決方案內含有一個項目的情況。

此時,

[方案總管]/{項目名}>>{在Windows資源管理員中開啟}/,

可以看到這個項目具有獨立的輸出目錄:bin目錄,其中的Debug檔案夾就是項目的輸出目標。

回到主視窗,

[主視窗]/{建立項目}/得到[建立項目],

再建一個項目附加到當前解決方案,

[建立項目]/{解決方案}=添加到當前解決方案。

此時,觀察目錄結構是

    • 解決方案
      • 項目1
        • 項目1.csproj
        • bin
          • Debug
          • Release
      • 項目2
      • 解決方案.sln

很顯然,這樣的設計哲學呈現的是,項目代表了某種”單元”的東西。而解決方案就是這些”單元”的集合。請試著猜想,我們對項目的引用進行添加的時候,自動產生的資訊到哪裡去了?是’解決方案.sln’還是’項目1.csproj’?

我們可以把這種特性用來組織程式的編寫工作。也就是把項目(project)作為可以複用的單元。這個單元比類進階,因為類實質就是文字文件。這個單元又比實際的應用程式低級,因為有一些項目它不產生新的.exe只產生新的.dll。其實這個等級恰恰就是常說的”模組化重用”中的模組。

 

第二,從 項目的引用和輸出來思考Visual Studio的組織

既然輸出是指,使用Visual Studio所做實際工作對應的新增項。那麼它可能是一個dll,也可能是一個.exe。總之,它一定是一個新增的單元。

可以提出一個簡單的問題:一個項目可以對應幾個引用項目?一個項目可以對應幾個輸出項目?一個引用項目可以對應幾個項目?一個輸出項目可以對應幾個項目?實際上通過自己編寫編譯指令碼,比如Makefile之類的東西,是可以精確掌握編譯的過程。但是很顯然,在Visual Studio當中沒有要求強制寫編譯指令碼。可以說,既然編譯過程可以自動化,那麼為什麼不利用這個好處呢?

利用這個好處的結果就是對上面問題的一種解答方式:一個項目可以引用多重專案,一個項目就是輸出一個項目(假如是Application模板,那就是一個.exe,類庫就是一個dll),而一個項目可以被其他任意多重專案引用。

藉助這樣的模組化統一思想,可以更加科學地劃分問題域,限制問題出現的範圍,有效地形成複用。

 

最後,從 他人的應用程式來猜測Visual Studio中的組織

以360安全衛士為例,360安全衛士很顯然對應一個”解決方案”。其主介面可以對應於IDE中的一個傳統型應用程式項目,模組化的實際功能就可以對應於IDE當中的類庫項目。同樣的理解,還可以應用於其他的應用程式。

對於應用程式的安裝包打包,實際上就是IDE當中的特殊項目:部署。

 

總結

一個功能豐富的應用程式很難像”Hello,World!”這樣簡單。Visual Studio提供了自動化的專案管理方法論,在其中,解決方案面向總的問題域,項目則提供了模組化的實現方式,理解並遵守這種方法論或許不能避免造輪子,但可以一定程度上避免自己始終造同一個輪子。

編程工作的組織--llorch的Visual Studio 基礎教程(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.