Tennis Refactoring Kata in C#
RojerChen.2023.03.23
最近在找重構相關的練習題目,意外地找到了 Tennis Refactor Kata,如果有上過 91極速開發的話,對於 Tennis 這個題目應該是相當的熟習。我自己在練習的時候,會盡量以尚未練習過這個題目的角度出發,盡可能從程式碼的上下文來釐清有哪些項目重複,可以取代、消除。
好比說下面這一段程式碼,你會怎麼樣調整?
for (var i = 1; i < 3; i++)
{
if (i == 1) tempScore = m_score1;
else { score += "-"; tempScore = m_score2; }
switch (tempScore)
{
case 0:
score += "Love";
break;
case 1:
score += "Fifteen";
break;
case 2:
score += "Thirty";
break;
case 3:
score += "Forty";
break;
}
}
如果你已經很熟悉了,你可能會馬上就用 scoreLookup 來處理分數的計算。我自己的處理方式,會先將 for loop 裡面的程式碼先擷取成 NormalScore 的方法
for (var i = 1; i < 3; i++)
{
score = NormalScore(i, score);
}
然後對應程式上下文,因為 for loop 會跑兩次,所以我們就可以把程式碼改成下方這樣,然後把 for loop 移除
score = NormalScore(1, score);
score = NormalScore(2, score);
接下來就在把第一個 NormalScore Inline 攤平,調整程式碼、再把第二個 NormalScore 攤平,這樣一步一步的調整程式碼。
我的練習:https://github.com/RojerChen/Tennis-Refactoring-Kata
0 意見:
張貼留言