制御フローの複雑さを改善するために、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;
}
コードをより読みやすく、適切にフォーマットしたいと考えています。しかし、手動での変更は非常に難しく、時間がかかります。ロジックを解析して、このプロセスを自動化できるツールはありますか?
ありがとう