所以我在这里并不追求可维护性或优雅性...只是想找到一种减少方法中总令牌的方法。该方法由长嵌套 if-else 构造组成,我发现使用三元运算符是(我认为)令牌最少的方式。基本上,我将其翻译为:
String method(param) {
if (param == null)
return error0;
else if (param.equals(foo1))
if (condition)
return bar1;
else
return error1;
else if (param.equals(foo2))
if (condition)
return bar2;
else
return error1;
...
else
return error;
}
转换为:
String method(param) {
return
param == null ?
error0 :
param.equals(foo1) ?
condition ?
bar1 :
error1 :
param.equals(foo2) ?
condition ?
bar2 :
error2 :
...
error
}
然而,有一些情况下除了返回一个值外,我还希望改变一个字段或调用一个方法;例如,
else if (param.equals(foo3))
if (condition) {
field = value;
return bar3;
}
else
return error3;
如何以最便宜的方式逐个处理令牌?目前我的方法不够美观,但不会浪费过多的令牌(在这里,字段是字符串):
param.equals(foo3) && (field = value) instanceOf String ?
condition ?
bar2 :
error2 :
再次强调,重点不在于好的编码,我只是在寻找减少令牌数量的技巧。如果有更短的写法,我也会接受建议。感谢任何建议。
编辑:每个单词和标点符号都算作一个令牌。例如,“instanceOf String”是两个令牌,但“!= null”是三个。可能需要改进的主要问题是“&&”和括号。是否有一种方法可以将“field = value”放在条件语句之外,如果没有,是否有一种构造使“field = value”成为布尔值而不需要括号?