在 JavaFX 中避免 if/else 语句

Avoiding if/else statements in JavaFX

AFAIK 我应该尽可能避免 if/else 语句。

我选择了这种方法,我想看看它是否有效。

FXMLLoader fxmlLoader = new FXMLLoader(HelloController.class.getResource("UserPanel.fxml"));
if(receivedJSON.get("isAdmin").toString().equals("1")) {
    fxmlLoader = new FXMLLoader(HelloController.class.getResource("AdminPanel.fxml"));
}

//....
//....
//code that needs to be run so I can't return in the if statement
//....

我不是很喜欢它,因为如果 isAdmin 属性是 1,我必须做两次赋值。

在这种情况下,避免 if/else 的最佳专业方法是什么?

谢谢!

此关于尽可能不使用 if 的指南仅适用于优化每秒执行数百万次的代码的情况。每次 运行 程序时,您可能只创建非常少量的 FXMLLoader。 即使您估计有 40 CPU 个周期丢失,在 4 Ghz 下,在失败的分支上仍然只有 10 纳秒,所以您不必担心。

事实上,即使你只花1分钟写这个post,并且你创建了100个FXMLLoader(总共1微秒),分支预测器连续失败100次(不会发生),编写 post 的时间仍然比理论上可以节省的时间长 6000 万倍。

或者如果你创建一个服务器程序,你只需要 1 分钟来优化它,它每秒在一个 if 语句中创建一个 FXMLLoader,并且每次分支预测都失败,那么该服务器需要 运行连续 190 年是值得的,即使您重视服务器单核 CPU 时间与开发人员时间相同。