ですから、ここでは保守性や優雅さを追求するつもりはありません。楽しみのためだけに、メソッドの合計トークンを削減する方法を探しています。このメソッドは、ネストされた長い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 :
繰り返しになりますが、要点は適切なコーディングではありません。トークン数を減らすためのハックを探しています。全体を書くためのより短い方法があれば、私もそれを受け入れます。提案をありがとう。
編集:各単語と句読点は1つのトークンとしてカウントされます。したがって、たとえば、「instanceOf String」は2つのトークンですが、「!=null」は3つです。改善の可能性について私が見ることができる主なものは、「&&」と括弧です。条件以外の場所に「field=value」を配置する方法はありますか?そうでない場合は、「field = value」を括弧なしでブール値にする構造がありますか?