题
所以我不打算对可维护性或优雅在这里..寻找一种方式,只是为了好玩的方法,以减少总的令牌上。该方法是由长嵌套的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
}
但是,也有一对夫妇的情况下,除了返回一个值I也想改变字段或呼叫的方法;如,
else if (param.equals(foo3))
if (condition) {
field = value;
return bar3;
}
else
return error3;
什么是做这个令牌明智最便宜的方式?我现在正在做的是丑陋的,但不会浪费太多令牌(这里的字段是一个字符串):
param.equals(foo3) && (field = value) instanceOf String ?
condition ?
bar2 :
error2 :
再次点不好的编码,我只是在寻找黑客以减少令牌计数。如果有写了整个事情更短的方式我接受这一点。感谢您的任何建议。
编辑:每个字和标点计为一个令牌。因此,例如,“}这种串”是两个符号,但“!= NULL”是三。主要的事情,我可以看到可能的改进是“&&”和括号。有没有把“域=价值”的地方除了有条件的一种方式,如果不是有一种构造,使“域=价值”,而不需要括号?
一个布尔解决方案
(field = value) instanceof String
假设它已经满足需要(并因此包括返回时value
是null
假),较短的替代便被
(field = value) != null
或者如果你真的忽略了,并希望使null
回报true
为好,然后用
(field = value) == value
如果使用1字母的变量名这可以制成短得多。
另外我没有看到其他的方式,我与我们大多数人都认为这一切是有点讨厌;)
其他提示
如果param为空,返回0,点击 然后,让的情况下,/开关/选择的参数声明。这是洁净的。
不隶属于 StackOverflow