我在这里过度使用 final 吗?
Do I overuse final here?
我已经阅读了很多关于 final
以及何时使用或不使用它的内容,我得出的结论是这主要是个人设计。因此,请考虑下面的 class,这是我过度使用 final 的情况吗?我知道我应该编写可读且清晰的代码,我认为考虑到所有最终结果,这仍然很清楚。
public final class ConsoleUtil {
private static final Logger LOGGER = Bukkit.getLogger();
private ConsoleUtil() {
}
public static void info(final Object... objects) {
log(Level.INFO, objects);
}
public static void warning(final Object... objects) {
log(Level.WARNING, objects);
}
public static void severe(final Object... objects) {
log(Level.SEVERE, objects);
}
public static void exception(final Exception e, final Object... objects) {
warning(objects);
e.printStackTrace();
}
private static void log(final Level level, final Object... objects) {
for (Object object : objects) {
LOGGER.log(level, "[HubControl] " + object.toString());
}
}
}
您关于选择主要取决于个人的结论大部分是正确的,因此您不应该真的问这个问题,因为答案偏离主题 "primarily opinion-based"。
我会尽量给你一个尽可能不基于意见的答案。
最终性是任何数据项最优秀的品质,任何做某事的机会final
都应该顽强地追求。另一方面,对于 java,将 final
添加到每个可以最终化的小东西变得非常乏味。考虑到编译器分析您的代码并可以确定变量是否 effectively final 而最终性实际上很重要,这也变得有点徒劳。
因此,大多数 java 开发人员采取的方法是避免在所有地方使用 final。请注意,这不是主观的,而是行业状况的报告。
我们可以要求 Oracle 的专家为语言添加默认确定性,这样除非另有声明,否则一切都是最终确定的,或者我们可以使用已经内置默认确定性的其他语言。
我已经阅读了很多关于 final
以及何时使用或不使用它的内容,我得出的结论是这主要是个人设计。因此,请考虑下面的 class,这是我过度使用 final 的情况吗?我知道我应该编写可读且清晰的代码,我认为考虑到所有最终结果,这仍然很清楚。
public final class ConsoleUtil {
private static final Logger LOGGER = Bukkit.getLogger();
private ConsoleUtil() {
}
public static void info(final Object... objects) {
log(Level.INFO, objects);
}
public static void warning(final Object... objects) {
log(Level.WARNING, objects);
}
public static void severe(final Object... objects) {
log(Level.SEVERE, objects);
}
public static void exception(final Exception e, final Object... objects) {
warning(objects);
e.printStackTrace();
}
private static void log(final Level level, final Object... objects) {
for (Object object : objects) {
LOGGER.log(level, "[HubControl] " + object.toString());
}
}
}
您关于选择主要取决于个人的结论大部分是正确的,因此您不应该真的问这个问题,因为答案偏离主题 "primarily opinion-based"。
我会尽量给你一个尽可能不基于意见的答案。
最终性是任何数据项最优秀的品质,任何做某事的机会final
都应该顽强地追求。另一方面,对于 java,将 final
添加到每个可以最终化的小东西变得非常乏味。考虑到编译器分析您的代码并可以确定变量是否 effectively final 而最终性实际上很重要,这也变得有点徒劳。
因此,大多数 java 开发人员采取的方法是避免在所有地方使用 final。请注意,这不是主观的,而是行业状况的报告。
我们可以要求 Oracle 的专家为语言添加默认确定性,这样除非另有声明,否则一切都是最终确定的,或者我们可以使用已经内置默认确定性的其他语言。