它确实看起来确实很臭,而且在没有看到更多上下文的情况下,无法确定地说。这样做可能有两个原因,尽管两者都有其他选择。
首先,这是实现部分转换的简洁方法,如果转换失败,则将结果保留为默认值。也就是说,您可能有以下内容:
public void ConvertFoo(Foo from, Foo to) {
if (can't convert) {
return;
}
...
}
Foo a;
Foo b = DefaultFoo();
ConvertFoo(a, b);
// If conversion fails, b is unchanged
当然,通常这是使用异常处理的。但是,即使出于某种原因需要避免出现异常,也有更好的方法可以做到这一点-TryParse模式是一种选择。
另一个原因是,这可能纯粹出于一致性原因,例如,它是公共API的一部分,无论出于何种原因,该方法都用于所有转换函数(例如具有多个输出的其他转换函数)。
Java不能很好地处理多个输出-它不能像某些语言一样具有仅输出参数,也不能像其他语言那样具有多个返回值-但即使如此,您仍然可以使用返回对象。
一致性原因相当la脚,但可悲的是,这可能是最常见的。
- 也许您工作场所(或代码库)的样式警察来自非Java背景并且不愿进行更改。
- 您的代码可能是这种风格更惯用的语言的移植。
- 您的组织可能需要在不同语言之间保持API的一致性,这是最低分母的样式(虽然很愚蠢,但即使对于Google也会发生)。
- 或者,该样式在遥远的过去更有意义,并演变为当前形式(例如,它本来可以是TryParse模式,但是一些善意的前任在发现根本没有检查任何值之后删除了返回值)。