Так что я не собираюсь обслуживать или элегантность здесь ... ищу способ сократить общее количество токенов в методе просто для удовольствия. Метод состоит из длинной вложенной конструкции 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» - это три. Основными вещами, которые я вижу для возможного улучшения, являются "&&" и скобки. Есть ли способ поместить «поле = значение» где-то помимо условного, и если нет, то есть ли конструкция, которая делает «поле = значение» логическим без необходимости в скобках?