我有这段代码来验证一个java.io.File
参数不应该是null
,应该是可访问的,应该是文件而不是目录等:
private static final String EXCEPTION_FILE_CAN_NOT_BE_READ =
"The file %s does not seem to readable.";
private static final String EXCEPTION_PATH_DOES_NOT_EXIST =
"The path %s does not seem to exist.";
private static final String EXCEPTION_PATH_IS_NOT_A_FILE =
"The path %s does not seem to correspond to a file.";
private static final String EXCEPTION_PATH_REFERENCE_IS_NULL =
"The supplied java.io.File path reference can not be null.";
public static Banana fromConfigurationFile(
File configurationFile) {
if (configurationFile == null) {
String nullPointerExceptionMessage =
String.format(EXCEPTION_PATH_REFERENCE_IS_NULL, configurationFile);
throw new NullPointerException();
}
if (!configurationFile.exists()) {
String illegalArgumentExceptionMessage =
String.format(EXCEPTION_PATH_DOES_NOT_EXIST,
configurationFile.getAbsolutePath());
throw new IllegalArgumentException(illegalArgumentExceptionMessage);
}
if (!configurationFile.isFile()) {
String illegalArgumentExceptionMessage =
String.format(EXCEPTION_PATH_IS_NOT_A_FILE,
configurationFile.getAbsolutePath());
throw new IllegalArgumentException(illegalArgumentExceptionMessage);
}
if (!configurationFile.canRead()) {
String illegalArgumentExceptionMessage =
String.format(EXCEPTION_FILE_CAN_NOT_BE_READ,
configurationFile.getAbsolutePath());
throw new IllegalArgumentException(illegalArgumentExceptionMessage);
}
// ... more tests, like "isEncoding(X)", "isBanana(ripe)", ...
}
对于我可能从某个地方“捏”的东西,看起来有很多样板。特别是因为这些不是我需要的所有检查,还有更多(例如,文件是文本文件并且具有正确的编码,...)。在我看来,有比这更简单的方法来做到这一点似乎是合理的。也许一个 FileSpecs 对象要通过 Builder 构造并传递给 verifyFileSpecs 静态助手?
问题:我做错了还是有可以重用的代码?
对帖子有效性常见问题的回答:
表明我事先做了一些研究:我查看了 Java 6 SDK,这是我从中获得不同方法的地方,查看了 JDK 7 和 Files.isReadable,查看了 Apache Commons IO,...
说明这个问题是独一无二的:我是专门问有没有可以复用的代码,我不是问“如何检查路径对应的是文件而不是目录?”,这些都已经有了答案就这样
为什么这对其他人有用:团队不喜欢提交代码审查、签入和版本控制、可能维护(单元测试等)的样板代码。因此,从信誉良好的来源借用代码将非常有帮助, 在我看来。