2009年8月24日 星期一

在C#中整理程式碼

在C++中因為宣告和實作可以分開
所以將同個類別的不同實作分寫成很多檔案很容易
只要所有的檔案同時include同樣的標頭(.h)檔案就可以了

不過在C#裡面因為宣告和實作沒辦法分開做
(除非你想寫interface,不過概念又不太一樣)
但是把所有的class都寫在一起又很複雜而難以閱讀
所以在C#裡面要整理程式碼有兩個工具

第一個就是用#region,#endregion將一部分的程式碼夾住
可以把同類型的程式,如變數宣告、事件處理、公開函式
分別寫在不同的region裡面

public class c1
{
#region var declaration

int i;

#endregion

#region public function

public void f1()
{
...
}

public void f2()
{
...
}

#endregion
}

之後就可以用visual studio的功能
將一部分的程式碼直接隱藏

public class c1
{
var declaration

public function
}

這對於程式可讀性來說相當重要
之後就可以針對需要閱讀或編輯的區塊展開來編輯就好

不過即使這樣,實際的檔案還是沒有變小
如果不是使用visual studio來檢視的時候就會很痛苦

所以這時候就要用到另外一個工具 - partial class
在C#裡面可以將類別(class)宣告成部分
所以可以將不同的部分宣告在不同的partial class裡面

public partial class c2
{
public void f1()
{
...
}
}

public partial class c2
{
public void f2()
{
...
}
}

在編譯的時候這些同樣名字的類別會被合在一起編譯
所以可以把同一個類別的個別函式宣告在不同的cs檔案裡
要注意每個檔案中要用同樣的namespace
只有相同namespace下的同名的partial class會被合併一起處理

另外補充一點
在WPF裡面,如果有使用XAML來配置class的一些內容
比如window或是application之類的
那class也必須宣告成partial
因為XAML也會被轉換成另外一個partial class
裡面包含像是InitializeComponent之類預設的function

--
參考資料
Partial Class Definitions (C# Programming Guide)
.NET 2.0四大金剛Partial Class

沒有留言:

張貼留言