質問

だから私はちょうど楽しみのための方法で合計トークンを削減する方法を探して...ここで保守性や優雅さのためにつもりはありません。この方法は、長いネストされた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の文字列は、」2つのトークンですが、「!= nullは」3です。私は可能な改善のために見ることができる主なものは、「&&」と括弧です。条件以外のどこかに「フィールド=値」を置くためにそこに方法があり、そうでない場合は、括弧を必要とせずに、「フィールド=値」ブールを作る構成物はありますか?

役に立ちましたか?

解決

(field = value) instanceof String

、短い代替は、その後されているだろう、それはすでにあなたのニーズを満たすと仮定すると(そしてこのようにvaluenullがあるときにfalseを返すが含まれる)

(field = value) != null

あなたが実際にそれを見落とし、同様nullリターンtrueを作りたい場合、または、その使用

(field = value) == value
あなたは1文字の変数名を使用する場合は、

これは非常に短くすることができます。

);

また、私は他の方法を見ていないと私は、このすべてがやや厄介であることを私たちのほとんどに同意します

他のヒント

paramはnullの場合、

、0
を返します そして、パラメータの場合/スイッチ/ select文を作ります。それはの

のクリーンです
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top