我想知道检查可能为空的方法参数的最佳方法是什么。
第一种合理的方法是使用番石榴:
String validatedValue= Optional.fromNullable(input).or("defaultValue");
第二种合理的方法是使用常规java。对于不懂番石榴的人来说,它可能具有易于理解的优点。然而,它仍然显示"低水平"代码。
String validatedValue= input !=null ? input : "empty";
或第三种方法。一方面主要方法看起来不错。另一方面,它可能产生许多小型私人方法。
String validatedValue = getValidatedValue(input); //this private method will contain option two
目前似乎第二种或第三种方法更好,在这种情况下不应使用可选方法。在这种情况下,有人能说出最佳做法吗?
答案 0 :(得分:3)
虽然我不会称之为“验证”,但提供 deafult if null 的首选方法类似于#2(如果不是#2本身) - 使用Guava的Objects.firstNonNull
(从番石榴18放在MoreObjects
)中:
String value = Objects.firstNonNull(input, "empty"); // MoreObjects since 18.0
内部做的:
return first != null ? first : checkNotNull(second);
使用静态导入它只是:
String nonNullValue = firstNonNull(input, "empty");
但你会使用哪一个只是一个偏好的问题。
P.S。我只在一个案例中使用Optional
- if you want lazy evaluated default,但是使用字符串则不是这种情况。仅用于空检查的私有方法是过度的,但如果您对值有其他假设,通常认为使用具有有意义名称的小型私有方法是一种好习惯(参见Clean Code by Uncle Bob)。