将 "condition ? expr1 : expr2" 链转换为 "if" 链
Convert a chain of "condition ? expr1 : expr2" to a chain of "if"s
是否有任何自动工具可以将 condition ? expr1 : expr2
链转换为更具可读性的 "if" 链?
我在 Netbeans 中使用 Java。
例如:
super(dao == null || (dao.isX.get() != null && dao.isX.getBoolean()) ? (isY ? "String1" : (isZ ? "String2" : (isA ? String3 : "String4"))) : "String5", BoxLayout.y());
注意:我可以手动完成,但我要求一个自动工具来避免在我发现 condition ? expr1 : expr2
的复杂链时出错
super(whatever);
应该始终是第一行,您的三元运算符是一种设计解决方案,您不能将其重构为 if
链(除非您将其包装到一个方法中,如 Andy ).
大多数现代 IDE 都可以将三元运算符转换为 if 语句,无论表达式多么复杂。
我查了我的IDEA上的三级三元运算,提示
如果您的没有类似功能,请寻找插件,或考虑切换到更高级的环境。
super(...)
(或this(...)
)总是需要成为构造函数中的第一个语句,因此您不能在那里使用 if 语句链。
看来你需要提取一个方法:
static String method() {
// Chain of if statements.
}
然后从构造函数中调用它:
super(method(), BoxLayout.y());
是否有任何自动工具可以将 condition ? expr1 : expr2
链转换为更具可读性的 "if" 链?
我在 Netbeans 中使用 Java。
例如:
super(dao == null || (dao.isX.get() != null && dao.isX.getBoolean()) ? (isY ? "String1" : (isZ ? "String2" : (isA ? String3 : "String4"))) : "String5", BoxLayout.y());
注意:我可以手动完成,但我要求一个自动工具来避免在我发现 condition ? expr1 : expr2
super(whatever);
应该始终是第一行,您的三元运算符是一种设计解决方案,您不能将其重构为 if
链(除非您将其包装到一个方法中,如 Andy
大多数现代 IDE 都可以将三元运算符转换为 if 语句,无论表达式多么复杂。
我查了我的IDEA上的三级三元运算,提示
如果您的没有类似功能,请寻找插件,或考虑切换到更高级的环境。
super(...)
(或this(...)
)总是需要成为构造函数中的第一个语句,因此您不能在那里使用 if 语句链。
看来你需要提取一个方法:
static String method() {
// Chain of if statements.
}
然后从构造函数中调用它:
super(method(), BoxLayout.y());