我認識到這可能不需要重構。我只是開始嘗試重構,並且我嘗試使用這一行代碼嘗試這樣做失敗。我試圖在VS2013中使用提取方法。唉。我在另外11個實例中使用了這一行的右側。我將如何重構C#中的這一行代碼?
Balance = Enumerable.Repeat(0.0, MonthsToRun).ToList();
Balance
是double
,MonthsToRun
爲int
。
每請求:
for (int i = 0, chunksCnt = Chunks.Count; i < chunksCnt; i++)
{
if (Chunks[i].BeginDate < BeginDate) BeginDate = Chunks[i].BeginDate;
MonthsToRun = Math.Max(MonthsToRun, Utils.MonthDifference(BeginDate, Chunks[i].BeginDate) + Chunks[i].Balance.Count);
}
Balance = Enumerable.Repeat(0.0, MonthsToRun).ToList();
Default = Enumerable.Repeat(0.0, MonthsToRun).ToList();
Loss = Enumerable.Repeat(0.0, MonthsToRun).ToList();
Prepay = Enumerable.Repeat(0.0, MonthsToRun).ToList();
Principal = Enumerable.Repeat(0.0, MonthsToRun).ToList();
Interest = Enumerable.Repeat(0.0, MonthsToRun).ToList();
for (int i = 0, chunksCnt = Chunks.Count; i < chunksCnt; i++)
{
offset = Utils.MonthDifference(BeginDate, Chunks[i].BeginDate);
for (int j = offset, balanceCnt = Chunks[i].Balance.Count; j < (balanceCnt + offset); j++)
{
Balance[j] += Chunks[i].Balance[j - offset];
Default[j] += Chunks[i].Default[j - offset];
Loss[j] += Chunks[i].Loss[j - offset];
Prepay[j] += Chunks[i].Prepay[j - offset];
Principal[j] += Chunks[i].Principal[j - offset];
Interest[j] += Chunks[i].Interest[j - offset];
}
if (Settings.runBacktesting)
{
foreach (KeyValuePair<Tuple<int, int, DateTime>, double> item in Chunks[i].TransProbChunk)
{
Utils.upsertDict(TransProbAgg, item.Key, item.Value);
//Create From Status - Month Totals Dictionary to create transition rates
Tuple<int, DateTime> key = new Tuple<int, DateTime>(item.Key.Item1, item.Key.Item3);
Utils.upsertDict(fromMonthTotals, key, item.Value);
}
}
}
爲什麼你認爲這需要重構? _「平衡是雙重的」_否,那麼這將不會編譯。也許一個'清單'。 –
您通常不會在行級重構,而是概念化(類,接口等)級別。但是,如果您看到一個在整個代碼中使用很多的模式,請嘗試描述它。 – Groo
這更讓我的腳溼潤。它可能不會。我只是好奇,假設它確實需要重構,那麼這將是一個合適的方式。 – StephenWinburn