Path 最佳实践:检索不包含';不存在

Path 最佳实践:检索不包含';不存在,path,Path,我目前正在写一些方法来确定硬盘上的某些路径。为了便于示例,让我们将它们称为GetBasePath()、GetSpecialPath()等 我的问题是,从设计的角度来看,如果目录不在预期位置,这些方法应该如何工作?我有点困惑,在这种情况下最好的做法是什么 我考虑的一些相互矛盾的可能解决方案: 1:方法的名称应该告诉您它是做什么的,因此GetBasePath或GetSpecialPath并不意味着该方法检查是否存在。打电话的人自己要检查是否存在。另外,一个名为GetBasePathIfItExist

我目前正在写一些方法来确定硬盘上的某些路径。为了便于示例,让我们将它们称为GetBasePath()、GetSpecialPath()等

我的问题是,从设计的角度来看,如果目录不在预期位置,这些方法应该如何工作?我有点困惑,在这种情况下最好的做法是什么

我考虑的一些相互矛盾的可能解决方案:

1:方法的名称应该告诉您它是做什么的,因此GetBasePath或GetSpecialPath并不意味着该方法检查是否存在。打电话的人自己要检查是否存在。另外,一个名为GetBasePathIfItExists的方法也有点过头了

2:如果路径不存在,这是一个例外情况,因为它们应该存在(至少在我的情况下),因此方法应该抛出异常

3:方法应该只返回有效路径,因此如果它不能返回有效的现有路径,则应该返回空字符串。(例如:Microsoft对Environment.GetFolderPath()执行此操作)

我目前倾向于解决方案1,因为这有一个优点,即您可以轻松地告诉用户路径的预期位置。一个例外可能告诉你同样的情况,但这真的是一个例外情况吗

你有什么建议


我希望这个问题不要太具体,其他读者也能从一个好的答案中受益

另一个选项可能是让函数创建对应的目录(如果它还不存在)。当然,这样做的能力取决于调用应用程序的预期权限和目录位置。如果无法创建目录(例如,如果目录中已存在同名文件),则引发异常。

如果这些路径应始终存在,则其不存在是异常的,您确实应该引发异常。这也是框架在许多IO命名空间类中的操作方式


如果合理预期这些路径可能不存在,您可能希望提供一个
xxxExists
布尔方法,该方法将检查是否存在,并允许程序员对此问题采取措施。

这些方法中没有一个本质上比其他方法更好。在特定情况下,所有这些都是适当的。您必须确保的唯一一件事是,文档说明了API的功能,更重要的是,名称也说明了这一点。只返回现有路径的方法与在必要时创建路径的方法有所不同,并且
findOrCreatePath
名称不太长,无法表示方法的功能。