.Net Framework布局實踐經驗分享
.Net Framework在實際應用中有很多經驗值得我們去總結探討,方便我們將來的應用。在這里我們會為大家總結一下.Net Framework布局的相關實踐總結,希望可以幫助大家提高編程效率。#t#
剛剛完成了TopGo程序的第一個版本,朋友們建議將此程序的開發過程共享。我也有此想法,唯恐自己能力有限,辜負了朋友們的期望。最后我還是決定把它寫出來,作為大家閑來無事時討論的話題也未嘗不可,同時我也真誠地希望各位同好們提出批評和建議。
TopGo是一款使用.Net Framework3.0(WinFx) 編寫的計算機圍棋軟件(由于本人喜歡下圍棋,不知道有沒有人知道幾年前的心弈1.0, 那就是拙作。),嚴格的說TopGo并不是一款有關于圍棋的游戲軟件,更多是作為工具軟件來設計的。之所以采用.Net Framework3.0,一則為了熟悉.Net Framework3.0, 二則是新的Windows Vista即將問世。
軟件編程方法
TopGo的編寫過程,既不是團隊下的產物,甚至連作坊式都談不上。但是,既然是軟件開發,必然涉及到設計方法。十多年的軟件開發生涯,我有我個人的開發方法,它是一種需求驅動的方法。
大家都有共同的體會,那就是在軟件開發過程中,客戶的需求總是琢磨不定,反復無常。尤其是當今社會的快速變換,各種需求的變化更加頻繁。所以那種傳統式的編寫好所有的需求分析,讓客戶認可簽字后在實現的方法已經不能適應目前的需要,于是,極限編程、敏捷編程陸續登上舞臺。其實我的方法可以在極限和敏捷編程中找到影子,也許是受它們的影響吧,但它不是極限編程或者敏捷編程。 我的大體步驟是:
1、確定部分需求
2、編寫代碼實現上述需求,盡可能采用測試驅動方法
3、逐步擴展需求
4、如果軟件還沒有完成了全部需求,回步驟1。
具體的實施過程,大家可以從后面描述的內容中看到,這里就不做詳細說明了。
.Net Framework布局詳解
每個人都可以說出,開發軟件的第一步就是要明確軟件的需求,然后是對需求進行分析。大部分公司還要求系統分析員寫出詳細的需求分析文檔以及設計規范書。無疑這些并沒有錯,問題是對于TopGo并不適合,TopGo首先假定對要編寫的軟件功能并不是太明確,其次TopGo并不是一個需要多人團隊協作的大項目。
對于TopGo, 讓我們看看如何開始。同許多程序員一樣,面對一個項目,會有一種馬上動手編寫代碼的渴望,而不是去寫什么文檔、做什么計劃,當然我并不是反對這樣做,何況每個人都有自己的做事方式。我的意思就是說一種行之有效的方法并不比寫在教科書上的方法差。
不過如何開始寫你的第一行代碼呢?記得有一本書叫做編程之道,書中描述到如果一個人在黑暗中要開槍擊中目標的話,有三種方法,第一種是任意向一個方向開槍,期望瞎貓碰到死老鼠;第二種方法則是對著四周掃射,這樣總有一顆子彈會命中目標;第三種那就是使用自動跟蹤彈,就象魚雷或者導彈那種,讓子彈去尋找目標。第三種方法也是我要使用的方法,首先我們確定一個大概的方向,然后對準這個方向開槍,然后看看會發生什么。 下面是我最初想到的需求:
1、TopGo必須能夠顯示一個棋盤;
2、TopGo的棋盤必須可以在一個指定的位置顯示指定顏色的棋子;
3、棋子的位置可以通過鼠標來指定(準確地說是鼠標左鍵)
OK, 需求并不一定要一次性的全部列出來,三個需求目前對我們開始工作已經夠了,它們也可以看成是三個編程任務或者三個目前要實現的目標。但是我們一次只能從中挑選一個出來。大致思考片刻,不難發現第一個任務是最好的開始(其實可以從任何一個開始)。考察第一個任務,我們可以分成更小的任務:
1、TopGo必須能夠顯示一個棋盤
1.1 棋盤在界面上的位置
1.2 畫棋盤的縱橫線(標準為19*19),棋盤的大小必須可以動態設置比如說(10*10)
……
啟動VS2005, 新建一個WinFx的Windows項目,起名為TopGo。對自動生成的Window1進行改名為MainWindow,并修改其它有關的部分,項目就這樣開始了。
接下來,我們大致考慮一下.Net Framework布局,經過考慮,我把界面分成了一個2*3的Grid:頂上一行合并用來布置菜單或者工具條,最底下一行也進行合并作為操作工具欄。中間一行分成兩個部分,左邊作為信息顯示面板,棋盤顯示在右邊一欄。它們的Xaml定義如下:
- < Window x:Class="TopGo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/
2006/xaml/presentation" xmlns:x=
"http://schemas.microsoft.com/winfx/
2006/xaml" Title="TopGo" MinHeight=
"600" MinWidth="800" WindowState=
"Maximized" >- < Grid>
- < Grid.RowDefinitions>
- < RowDefinition Height="50" />
- < RowDefinition Height="*" />
- < RowDefinition Height="36" />
- < /Grid.RowDefinitions>
- < Grid.ColumnDefinitions>
- < ColumnDefinition Width="280" />
- < ColumnDefinition Width="*" />
- < /Grid.ColumnDefinitions>
- < /Grid>
- < /Window>
.Net Framework布局中設置窗體最小尺寸為800*600的目的是因為如果窗體太小,棋盤可能就太小了,而且目前大多數顯示器基本都可以支持這個尺寸,如果不支持這個尺寸的顯示器,那么我想這些機器可能也不支持Windows XP以上的操作系統,程序也不能運行在這些機器上面。還有我們把信息顯示面板欄的寬度以及上下兩行的高度設置為固定的,這樣我們可以保證剩下的空間最大可能的用于棋盤的顯示。