[英]Adapting methods which return true/false
适应向Java返回true / false的C样式函数时的最佳实践是什么?
这是说明问题所在的简单方法。
public static boolean fileNameEndsWithExtension( String filename, String fileExtension) {
return filename.endsWith( fileExtension );
}
请注意,可能有一种更优雅的文件过滤方法(可以对此发表评论)。 无论如何,如果filename是一个null
值,则执行以下操作:
null
的情况和String
或文件名不以给定文件扩展名结尾的情况? null
值的包装器类Boolean。 Exception
并强制程序员确保从未将null
值传递给该方法吗? 如果filename为null,则应引发NullPointerException或IllegalArgumentException。 我让你决定哪个最好。 有一个关于该问题的辩论: IllegalArgumentException或NullPointerException是否为null参数?
您可以在特定应用程序的问题域中执行有意义的操作:
在大多数情况下,选项3会很明智,但是这里没有人可以排除其他选项对您的应用程序的适用性。 如果您出于充分的原因传递了很多有意义的空文件名,则选择其他文件名可能很有意义。
我将使用1或3。最好是抛出NullPointerExceptions或至少使用assert 。
返回可为空的布尔值通常会带来比其价值更大的麻烦,您需要检查空值等。除了fileNameEndsWithExtension()
看起来像一个函数,只有当您知道自己具有有效的文件名时才会使用。
同样不要忘记fileExtension
也可能为null。
如果filename为null,我将返回false,并且不理会null与其他任何不匹配值之间的区别。
如果空文件名是需要特别验证和处理的独特状态,则应单独进行验证,最好在检查endsWith()之前进行验证,但仍将null检查保留在endsWith()中,以防止不必要的运行时异常。
我之所以选择null = false的行为,可能是由于关系数据库的影响。 以下查询将仅返回符合条件的行,其他所有内容(空和不匹配)将被忽略。
select * from filenames
where filename like '&fileExtension';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.