【发布时间】:2022-01-21 10:56:35
【问题描述】:
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-else 语句?
-
@Stultuske 的好习惯,据我所知
-
OK.. 请允许我改述一下。是什么让您认为这是一种好的做法?
-
专业的方式是避免过早的微优化 :) 你的 sn-p 看起来像次优的逻辑/类结构(f.i. 如果你替换为用户实例化一个加载器它与管理员的加载程序基于您在创建之前似乎知道的条件)。
-
它已经关闭,所以我无法回答,但是,我会这样写:创建一个方法
boolean isAdmin(JsonObject json) { return json.get("isAdmin").toString().equals("1"); }创建一个方法Parent loadView(String viewName) { \* create a loader, load the viewName fxml and return the parent *\ },然后我会写Parent view = isAdmin(receivedJSON) ? loadView("AdminPanel") : loadView("UserPanel");` 然后继续你的“需要运行的代码”。