2011-11-23 52 views
2

我有兩個類。例如讓他們成爲目錄和文件。有我自己的自定義類,而不是.NET Framework的一部分。 所以,Directory有Title字段和文件列表。文件也有幾個字段。類中的使用方法

我應該在哪裏放置方法,它將按目錄標題返回文件列表,例如,目錄類或文件類中的 ?

即其中的這些好:

public List<Files> Directory.GetFiles(string directoryTitle){...} 
public List<Files> File.GetFilesByDirectory(string directoryTitle){...} 

,爲什麼?

+1

它應該返回'IEnumerable '或'ReadOnlyCollection ',而不是'List '。 – SLaks

+1

[System.IO.Directory.GetFiles](http://msdn.microsoft.com/zh-cn/library/07wt70x2.aspx)有什麼問題? – Groo

+0

@格羅 - 這只是一個例子。我的意思是任何班級都有這種情況。 – Tannheuser

回答

4

兩個想法:

第一,它是知道的上市文件的目錄,因此,這就是應該住。

其次,嘗試堅持接口爲您的返回類型 - IList而不是列表。這爲返回不同類型的列表和單元測試提供了更大的靈活性。

+0

作爲上面提到的@SLaks,只讀集合(或數組或IEnumerable)對於返回類型來說是一個更好的選擇。 – Groo

+0

@格羅:不是數組;數組不是隻讀的,必須調整大小以適合數組。 – SLaks

+0

@SLaks:只讀集合***或***數組。我個人只會考慮'IEnumerable',但是'Directory.GetFiles'(以及許多其他的BCL類)會返回一個數組。如果沒有別的辦法,與List列表相比,需要額外的努力來調整它的大小。 – Groo

0

我想說的首先是更好

public List<Files> Directory.GetFiles(string directoryTitle){...} 

由於文件所在本身應該不知道和目錄是知道哪些文件包含。

0

你實際上把它們放在哪裏是你自己的特權,但我會說在這個例子中使用第一個版本在語義上更合理:Directory.GetFiles。 NET框架實際上公開了一個Directory類,您可以使用它作爲示例,包含此類方法。

考慮到目錄實例已經包含一個已知文件列表,它似乎也會反其道而行之,反之亦然。

0

我會親自離開這兩個類,創建第三個類來完成最大化代碼重用機會的工作。稱它爲DirectoryFileFinder或類似的東西。