C# 在类中使用方法
我有两节课。例如,让它们成为目录和文件。有我自己的自定义类,而不是.NET Framework的一部分。 所以,目录有标题字段和文件列表。文件也有几个字段 我应该将按目录标题返回文件列表的方法放在哪里,例如, 目录类还是文件类 i、 e.以下哪项更好:C# 在类中使用方法,c#,.net,class,methods,C#,.net,Class,Methods,我有两节课。例如,让它们成为目录和文件。有我自己的自定义类,而不是.NET Framework的一部分。 所以,目录有标题字段和文件列表。文件也有几个字段 我应该将按目录标题返回文件列表的方法放在哪里,例如, 目录类还是文件类 i、 e.以下哪项更好: public List<Files> Directory.GetFiles(string directoryTitle){...} public List<Files> File.GetFilesByDirectory(s
public List<Files> Directory.GetFiles(string directoryTitle){...}
public List<Files> File.GetFilesByDirectory(string directoryTitle){...}
public List Directory.GetFiles(string directoryTitle){…}
公共列表文件.GetFilesByDirectory(字符串目录标题){…}
为什么呢?两个想法:
首先,它是知道列出文件的目录,所以它应该位于该目录中
其次,尝试使用返回类型的接口-IList而不是List。这为您返回不同类型的列表和单元测试提供了更大的灵活性。我认为第一个更好
public List Directory.GetFiles(string directoryTitle){…}
因为文件本身不应该知道它位于何处,目录也应该知道它包含哪些文件。您实际将它们放在何处是您自己的特权,但我想说,在本例中使用第一个版本在语义上更合理:
Directory.GetFiles
。NET框架实际上公开了一个目录
类,您可以使用该类作为示例,其中包含这样一个方法
考虑到目录实例已经包含了一个已知文件的列表,从另一个角度来看,这样做似乎有点违反直觉。我个人会将这两个类都放在一边,创建一个第三个类来完成最大限度地提高代码重用机会的工作。称之为DirectoryFileFinder或类似的东西 它应该返回
IEnumerable
或ReadOnlyCollection
,而不是List
。有什么问题?@Groo-这只是一个例子。“我指的是任何类的这种情况,”Tannhueser-但答案将取决于您正在建模的域。对于文件和目录可能为真的内容对于例如Dog和Cat将不为真。“任何类”都没有单一的正确答案。@ShellShock-我的失败,当然不是“任何类”,而是相互关联的类。像User和Order等。正如上面提到的@SLaks一样,对于返回类型,只读集合(或数组,或IEnumerable
)将是更好的选择。@Groo:不是数组;数组不是只读的,必须调整大小以适合。@SLaks:只读集合或数组。我个人只考虑<代码> iQueabd,但是<代码>目录.GETFrase(以及许多其他BCL类)返回数组。与列表
@Groo:array-returning-framework方法早于泛型相比,如果没有其他方法的话,则需要额外的努力来调整它的大小。现代代码不应该返回数组,因为它需要在填充数组后调整数组大小以适应它(与集合不同)
public List<Files> Directory.GetFiles(string directoryTitle){...}