문제
그래서 나는 여기서 유지 가능성이나 우아함을 원치 않을 것입니다 .. 재미를위한 방법에서 총 토큰을 줄이는 방법을 찾고 있습니다. 이 방법은 긴 중첩 if-else 구조로 구성되어 있으며, 가장 적은 토큰으로 수행하는 방법은 3 원 운영자라는 것을 알았습니다. 본질적으로 나는 이것을 번역한다 :
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 :
다시 말하지만, 요점은 좋은 코딩이 아닙니다. 저는 토큰 수를 줄이기위한 해킹을 찾고 있습니다. 전체를 쓰는 방법이 짧으면 그에게도 열려 있습니다. 제안 해주셔서 감사합니다.
편집 : 각 단어와 문장 부호 마크는 하나의 토큰으로 계산됩니다. 예를 들어, "String의 인스턴스"는 두 개의 토큰이지만 "! = null"은 3입니다. 가능한 개선을 위해 볼 수있는 주요 사항은 "&&"와 괄호입니다. 조건부 외에 "Field = value"를 어딘가에 넣는 방법이 있습니까? 그렇지 않다면 "Field = value"를 괄호가 필요없는 부울을 만드는 구성이 있습니까?
해결책
(field = value) instanceof String
이미 귀하의 요구를 충족한다고 가정하면 (따라서 허위 반환이 포함됩니다. value
~이다 null
), 더 짧은 대안이 있었을 것입니다
(field = value) != null
아니면 실제로 그것을 간과하고 만들고 싶다면 null
반품 true
또한 사용하십시오
(field = value) == value
1 글자 변수 이름을 사용하면 훨씬 짧게 만들 수 있습니다.
더 나아가 나는 다른 방법을 보지 못하고 우리 대부분 이이 모든 것이 다소 불쾌하다는 것에 동의합니다.)
다른 팁
param이 null 인 경우 0을 반환하십시오
그런 다음 매개 변수에서 Case/Switch/Select 문을 만드십시오. 그게 깨끗한 .