1

制御フローの複雑さを改善するために、C# コード ブロックをリファクタリングおよび再配置する自動ツールについて検索します。「while & for」ループの代わりに「GOTO」と「switch」を使用する厄介な C# コードがあります。

        public double GetMaximumRange(long startPoint, long endPoint)
    {
        double range;
        double variable1 = _priceArray[(int) startPoint];
        double variable2 = _priceArray[(int) startPoint];
        var variable3 = (int) endPoint;
        var index = (int) (startPoint + 1L);
        Label_002F:
        if (index > variable3)
        {
            goto Label_0083;
        }
        if (_priceArray[index] <= variable1)
        {
            goto Label_0059;
        }
        variable1 = _priceArray[index];
        goto Label_0078;
        Label_0059:
        if (_priceArray[index] >= variable2)
        {
            goto Label_0078;
        }
        variable2 = _priceArray[index];
        Label_0078:
        index++;
        goto Label_002F;
        Label_0083:
        range = variable1 - variable2;
        return range;
    }

これは非常に複雑な自動生成されたスパゲッティ C# コードです。Re-sharper & VS で手動で改善し、「GOTO」ループを「For」ループに置き換え、コード ブロックを再配置しようとしたところ、次のコードが得られました。

        public double GetMaximumRange(long startPtr, long endPtr)
    {
        double maximum = _priceArray[startPtr];
        double minimum = _priceArray[startPtr];

        for (long i = (startPtr + 1L); i <= endPtr; i++)
        {
            if((_priceArray[i] <= maximum))
            {
                if (_priceArray[i] < minimum)
                {
                    minimum = _priceArray[i];
                }
            }
            else
            {
                maximum = _priceArray[i];
            }
        }

        double range = maximum - minimum;
        return range;
    }

コードをより読みやすく、適切にフォーマットしたいと考えています。しかし、手動での変更は非常に難しく、時間がかかります。ロジックを解析して、このプロセスを自動化できるツールはありますか?

ありがとう

4

0 に答える 0