所以我不会在这里追求可维护性或优雅性.. 寻找一种方法来减少总令牌的数量,只是为了好玩。该方法由一个长嵌套的 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”成为布尔值而不需要括号?